{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
    "    <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
    "         <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
    "    </a>\n",
    "</div>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a href=\"https://www.bigdatauniversity.com\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width=300, align=\"center\"></a>\n",
    "\n",
    "<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1>Module 5: Model Evaluation and Refinement</h1>\n",
    "\n",
    "We have built models and made predictions of vehicle prices. Now we will determine how accurate these predictions are. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1>Table of content</h1>\n",
    "<ul>\n",
    "    <li><a href=\"#ref1\">Model Evaluation </a></li>\n",
    "    <li><a href=\"#ref2\">Over-fitting, Under-fitting and Model Selection </a></li>\n",
    "    <li><a href=\"#ref3\">Ridge Regression </a></li>\n",
    "    <li><a href=\"#ref4\">Grid Search</a></li>\n",
    "</ul>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# Import clean data \n",
    "path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/module_5_auto.csv'\n",
    "df = pd.read_csv(path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('module_5_auto.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " First lets only use numeric data "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>symboling</th>\n",
       "      <th>normalized-losses</th>\n",
       "      <th>make</th>\n",
       "      <th>aspiration</th>\n",
       "      <th>num-of-doors</th>\n",
       "      <th>body-style</th>\n",
       "      <th>drive-wheels</th>\n",
       "      <th>engine-location</th>\n",
       "      <th>...</th>\n",
       "      <th>compression-ratio</th>\n",
       "      <th>horsepower</th>\n",
       "      <th>peak-rpm</th>\n",
       "      <th>city-mpg</th>\n",
       "      <th>highway-mpg</th>\n",
       "      <th>price</th>\n",
       "      <th>city-L/100km</th>\n",
       "      <th>horsepower-binned</th>\n",
       "      <th>diesel</th>\n",
       "      <th>gas</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>convertible</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>13495.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>convertible</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>hatchback</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>19</td>\n",
       "      <td>26</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>audi</td>\n",
       "      <td>std</td>\n",
       "      <td>four</td>\n",
       "      <td>sedan</td>\n",
       "      <td>fwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>10.0</td>\n",
       "      <td>102.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>24</td>\n",
       "      <td>30</td>\n",
       "      <td>13950.0</td>\n",
       "      <td>9.791667</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>audi</td>\n",
       "      <td>std</td>\n",
       "      <td>four</td>\n",
       "      <td>sedan</td>\n",
       "      <td>4wd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>8.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>18</td>\n",
       "      <td>22</td>\n",
       "      <td>17450.0</td>\n",
       "      <td>13.055556</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1  symboling  normalized-losses         make  \\\n",
       "0           0             0          3                122  alfa-romero   \n",
       "1           1             1          3                122  alfa-romero   \n",
       "2           2             2          1                122  alfa-romero   \n",
       "3           3             3          2                164         audi   \n",
       "4           4             4          2                164         audi   \n",
       "\n",
       "  aspiration num-of-doors   body-style drive-wheels engine-location  ...  \\\n",
       "0        std          two  convertible          rwd           front  ...   \n",
       "1        std          two  convertible          rwd           front  ...   \n",
       "2        std          two    hatchback          rwd           front  ...   \n",
       "3        std         four        sedan          fwd           front  ...   \n",
       "4        std         four        sedan          4wd           front  ...   \n",
       "\n",
       "   compression-ratio  horsepower  peak-rpm  city-mpg  highway-mpg    price  \\\n",
       "0                9.0       111.0    5000.0        21           27  13495.0   \n",
       "1                9.0       111.0    5000.0        21           27  16500.0   \n",
       "2                9.0       154.0    5000.0        19           26  16500.0   \n",
       "3               10.0       102.0    5500.0        24           30  13950.0   \n",
       "4                8.0       115.0    5500.0        18           22  17450.0   \n",
       "\n",
       "  city-L/100km  horsepower-binned diesel  gas  \n",
       "0    11.190476             Medium      0    1  \n",
       "1    11.190476             Medium      0    1  \n",
       "2    12.368421             Medium      0    1  \n",
       "3     9.791667             Medium      0    1  \n",
       "4    13.055556             Medium      0    1  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_numeric_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m <no docstring>\n",
       "\u001b[0;31mFile:\u001b[0m      ~/conda/envs/python/lib/python3.6/site-packages/pandas/core/generic.py\n",
       "\u001b[0;31mType:\u001b[0m      method\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df._get_numeric_data?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>symboling</th>\n",
       "      <th>normalized-losses</th>\n",
       "      <th>make</th>\n",
       "      <th>aspiration</th>\n",
       "      <th>num-of-doors</th>\n",
       "      <th>body-style</th>\n",
       "      <th>drive-wheels</th>\n",
       "      <th>engine-location</th>\n",
       "      <th>...</th>\n",
       "      <th>compression-ratio</th>\n",
       "      <th>horsepower</th>\n",
       "      <th>peak-rpm</th>\n",
       "      <th>city-mpg</th>\n",
       "      <th>highway-mpg</th>\n",
       "      <th>price</th>\n",
       "      <th>city-L/100km</th>\n",
       "      <th>horsepower-binned</th>\n",
       "      <th>diesel</th>\n",
       "      <th>gas</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>convertible</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>13495.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>convertible</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>122</td>\n",
       "      <td>alfa-romero</td>\n",
       "      <td>std</td>\n",
       "      <td>two</td>\n",
       "      <td>hatchback</td>\n",
       "      <td>rwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>19</td>\n",
       "      <td>26</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>audi</td>\n",
       "      <td>std</td>\n",
       "      <td>four</td>\n",
       "      <td>sedan</td>\n",
       "      <td>fwd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>10.0</td>\n",
       "      <td>102.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>24</td>\n",
       "      <td>30</td>\n",
       "      <td>13950.0</td>\n",
       "      <td>9.791667</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>audi</td>\n",
       "      <td>std</td>\n",
       "      <td>four</td>\n",
       "      <td>sedan</td>\n",
       "      <td>4wd</td>\n",
       "      <td>front</td>\n",
       "      <td>...</td>\n",
       "      <td>8.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>18</td>\n",
       "      <td>22</td>\n",
       "      <td>17450.0</td>\n",
       "      <td>13.055556</td>\n",
       "      <td>Medium</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1  symboling  normalized-losses         make  \\\n",
       "0           0             0          3                122  alfa-romero   \n",
       "1           1             1          3                122  alfa-romero   \n",
       "2           2             2          1                122  alfa-romero   \n",
       "3           3             3          2                164         audi   \n",
       "4           4             4          2                164         audi   \n",
       "\n",
       "  aspiration num-of-doors   body-style drive-wheels engine-location  ...  \\\n",
       "0        std          two  convertible          rwd           front  ...   \n",
       "1        std          two  convertible          rwd           front  ...   \n",
       "2        std          two    hatchback          rwd           front  ...   \n",
       "3        std         four        sedan          fwd           front  ...   \n",
       "4        std         four        sedan          4wd           front  ...   \n",
       "\n",
       "   compression-ratio  horsepower  peak-rpm  city-mpg  highway-mpg    price  \\\n",
       "0                9.0       111.0    5000.0        21           27  13495.0   \n",
       "1                9.0       111.0    5000.0        21           27  16500.0   \n",
       "2                9.0       154.0    5000.0        19           26  16500.0   \n",
       "3               10.0       102.0    5500.0        24           30  13950.0   \n",
       "4                8.0       115.0    5500.0        18           22  17450.0   \n",
       "\n",
       "  city-L/100km  horsepower-binned diesel  gas  \n",
       "0    11.190476             Medium      0    1  \n",
       "1    11.190476             Medium      0    1  \n",
       "2    12.368421             Medium      0    1  \n",
       "3     9.791667             Medium      0    1  \n",
       "4    13.055556             Medium      0    1  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>symboling</th>\n",
       "      <th>normalized-losses</th>\n",
       "      <th>wheel-base</th>\n",
       "      <th>length</th>\n",
       "      <th>width</th>\n",
       "      <th>height</th>\n",
       "      <th>curb-weight</th>\n",
       "      <th>engine-size</th>\n",
       "      <th>...</th>\n",
       "      <th>stroke</th>\n",
       "      <th>compression-ratio</th>\n",
       "      <th>horsepower</th>\n",
       "      <th>peak-rpm</th>\n",
       "      <th>city-mpg</th>\n",
       "      <th>highway-mpg</th>\n",
       "      <th>price</th>\n",
       "      <th>city-L/100km</th>\n",
       "      <th>diesel</th>\n",
       "      <th>gas</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>88.6</td>\n",
       "      <td>0.811148</td>\n",
       "      <td>0.890278</td>\n",
       "      <td>48.8</td>\n",
       "      <td>2548</td>\n",
       "      <td>130</td>\n",
       "      <td>...</td>\n",
       "      <td>2.68</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>13495.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>88.6</td>\n",
       "      <td>0.811148</td>\n",
       "      <td>0.890278</td>\n",
       "      <td>48.8</td>\n",
       "      <td>2548</td>\n",
       "      <td>130</td>\n",
       "      <td>...</td>\n",
       "      <td>2.68</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>122</td>\n",
       "      <td>94.5</td>\n",
       "      <td>0.822681</td>\n",
       "      <td>0.909722</td>\n",
       "      <td>52.4</td>\n",
       "      <td>2823</td>\n",
       "      <td>152</td>\n",
       "      <td>...</td>\n",
       "      <td>3.47</td>\n",
       "      <td>9.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>19</td>\n",
       "      <td>26</td>\n",
       "      <td>16500.0</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>99.8</td>\n",
       "      <td>0.848630</td>\n",
       "      <td>0.919444</td>\n",
       "      <td>54.3</td>\n",
       "      <td>2337</td>\n",
       "      <td>109</td>\n",
       "      <td>...</td>\n",
       "      <td>3.40</td>\n",
       "      <td>10.0</td>\n",
       "      <td>102.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>24</td>\n",
       "      <td>30</td>\n",
       "      <td>13950.0</td>\n",
       "      <td>9.791667</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>99.4</td>\n",
       "      <td>0.848630</td>\n",
       "      <td>0.922222</td>\n",
       "      <td>54.3</td>\n",
       "      <td>2824</td>\n",
       "      <td>136</td>\n",
       "      <td>...</td>\n",
       "      <td>3.40</td>\n",
       "      <td>8.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>18</td>\n",
       "      <td>22</td>\n",
       "      <td>17450.0</td>\n",
       "      <td>13.055556</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1  symboling  normalized-losses  wheel-base  \\\n",
       "0           0             0          3                122        88.6   \n",
       "1           1             1          3                122        88.6   \n",
       "2           2             2          1                122        94.5   \n",
       "3           3             3          2                164        99.8   \n",
       "4           4             4          2                164        99.4   \n",
       "\n",
       "     length     width  height  curb-weight  engine-size  ...  stroke  \\\n",
       "0  0.811148  0.890278    48.8         2548          130  ...    2.68   \n",
       "1  0.811148  0.890278    48.8         2548          130  ...    2.68   \n",
       "2  0.822681  0.909722    52.4         2823          152  ...    3.47   \n",
       "3  0.848630  0.919444    54.3         2337          109  ...    3.40   \n",
       "4  0.848630  0.922222    54.3         2824          136  ...    3.40   \n",
       "\n",
       "   compression-ratio  horsepower  peak-rpm  city-mpg  highway-mpg    price  \\\n",
       "0                9.0       111.0    5000.0        21           27  13495.0   \n",
       "1                9.0       111.0    5000.0        21           27  16500.0   \n",
       "2                9.0       154.0    5000.0        19           26  16500.0   \n",
       "3               10.0       102.0    5500.0        24           30  13950.0   \n",
       "4                8.0       115.0    5500.0        18           22  17450.0   \n",
       "\n",
       "   city-L/100km  diesel  gas  \n",
       "0     11.190476       0    1  \n",
       "1     11.190476       0    1  \n",
       "2     12.368421       0    1  \n",
       "3      9.791667       0    1  \n",
       "4     13.055556       0    1  \n",
       "\n",
       "[5 rows x 21 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=df._get_numeric_data()\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Libraries for plotting "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "! pip install ipywidgets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mType:\u001b[0m        module\n",
       "\u001b[0;31mString form:\u001b[0m <module 'ipywidgets' from '/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/ipywidgets/__init__.py'>\n",
       "\u001b[0;31mFile:\u001b[0m        ~/conda/envs/python/lib/python3.6/site-packages/ipywidgets/__init__.py\n",
       "\u001b[0;31mDocstring:\u001b[0m  \n",
       "Interactive widgets for the Jupyter notebook.\n",
       "\n",
       "Provide simple interactive controls in the notebook.\n",
       "Each Widget corresponds to an object in Python and Javascript,\n",
       "with controls on the page.\n",
       "\n",
       "To put a Widget on the page, you can display it with IPython's display machinery::\n",
       "\n",
       "    from ipywidgets import IntSlider\n",
       "    from IPython.display import display\n",
       "    slider = IntSlider(min=1, max=10)\n",
       "    display(slider)\n",
       "\n",
       "Moving the slider will change the value. Most Widgets have a current value,\n",
       "accessible as a `value` attribute.\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import ipywidgets\n",
    "ipywidgets?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated since IPython 4.0. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
      "  \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n"
     ]
    }
   ],
   "source": [
    "from IPython.display import display\n",
    "from IPython.html import widgets \n",
    "from IPython.display import display\n",
    "from ipywidgets import interact, interactive, fixed, interact_manual"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Functions for plotting</h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "def DistributionPlot(RedFunction, BlueFunction, RedName, BlueName, Title):\n",
    "    width = 12\n",
    "    height = 10\n",
    "    plt.figure(figsize=(width, height))\n",
    "\n",
    "    ax1 = sns.distplot(RedFunction, hist=False, color=\"r\", label=RedName)\n",
    "    ax2 = sns.distplot(BlueFunction, hist=False, color=\"b\", label=BlueName, ax=ax1)\n",
    "\n",
    "    plt.title(Title)\n",
    "    plt.xlabel('Price (in dollars)')\n",
    "    plt.ylabel('Proportion of Cars')\n",
    "\n",
    "    plt.show()\n",
    "    plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "def PollyPlot(xtrain, xtest, y_train, y_test, lr,poly_transform):\n",
    "    width = 12\n",
    "    height = 10\n",
    "    plt.figure(figsize=(width, height))\n",
    "    \n",
    "    \n",
    "    #training data \n",
    "    #testing data \n",
    "    # lr:  linear regression object \n",
    "    #poly_transform:  polynomial transformation object \n",
    " \n",
    "    xmax=max([xtrain.values.max(), xtest.values.max()])\n",
    "\n",
    "    xmin=min([xtrain.values.min(), xtest.values.min()])\n",
    "\n",
    "    x=np.arange(xmin, xmax, 0.1)\n",
    "\n",
    "\n",
    "    plt.plot(xtrain, y_train, 'ro', label='Training Data')\n",
    "    plt.plot(xtest, y_test, 'go', label='Test Data')\n",
    "    plt.plot(x, lr.predict(poly_transform.fit_transform(x.reshape(-1, 1))), label='Predicted Function')\n",
    "    plt.ylim([-10000, 60000])\n",
    "    plt.ylabel('Price')\n",
    "    plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1 id=\"ref1\">Part 1: Training and Testing</h1>\n",
    "\n",
    "<p>An important step in testing your model is to split your data into training and testing data. We will place the target data <b>price</b> in a separate dataframe <b>y</b>:</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      13495.0\n",
       "1      16500.0\n",
       "2      16500.0\n",
       "3      13950.0\n",
       "4      17450.0\n",
       "        ...   \n",
       "196    16845.0\n",
       "197    19045.0\n",
       "198    21485.0\n",
       "199    22470.0\n",
       "200    22625.0\n",
       "Name: price, Length: 201, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_data = df['price']\n",
    "y_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "drop price data in x data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>symboling</th>\n",
       "      <th>normalized-losses</th>\n",
       "      <th>wheel-base</th>\n",
       "      <th>length</th>\n",
       "      <th>width</th>\n",
       "      <th>height</th>\n",
       "      <th>curb-weight</th>\n",
       "      <th>engine-size</th>\n",
       "      <th>bore</th>\n",
       "      <th>stroke</th>\n",
       "      <th>compression-ratio</th>\n",
       "      <th>horsepower</th>\n",
       "      <th>peak-rpm</th>\n",
       "      <th>city-mpg</th>\n",
       "      <th>highway-mpg</th>\n",
       "      <th>city-L/100km</th>\n",
       "      <th>diesel</th>\n",
       "      <th>gas</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>88.6</td>\n",
       "      <td>0.811148</td>\n",
       "      <td>0.890278</td>\n",
       "      <td>48.8</td>\n",
       "      <td>2548</td>\n",
       "      <td>130</td>\n",
       "      <td>3.47</td>\n",
       "      <td>2.68</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>122</td>\n",
       "      <td>88.6</td>\n",
       "      <td>0.811148</td>\n",
       "      <td>0.890278</td>\n",
       "      <td>48.8</td>\n",
       "      <td>2548</td>\n",
       "      <td>130</td>\n",
       "      <td>3.47</td>\n",
       "      <td>2.68</td>\n",
       "      <td>9.0</td>\n",
       "      <td>111.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>21</td>\n",
       "      <td>27</td>\n",
       "      <td>11.190476</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>122</td>\n",
       "      <td>94.5</td>\n",
       "      <td>0.822681</td>\n",
       "      <td>0.909722</td>\n",
       "      <td>52.4</td>\n",
       "      <td>2823</td>\n",
       "      <td>152</td>\n",
       "      <td>2.68</td>\n",
       "      <td>3.47</td>\n",
       "      <td>9.0</td>\n",
       "      <td>154.0</td>\n",
       "      <td>5000.0</td>\n",
       "      <td>19</td>\n",
       "      <td>26</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>99.8</td>\n",
       "      <td>0.848630</td>\n",
       "      <td>0.919444</td>\n",
       "      <td>54.3</td>\n",
       "      <td>2337</td>\n",
       "      <td>109</td>\n",
       "      <td>3.19</td>\n",
       "      <td>3.40</td>\n",
       "      <td>10.0</td>\n",
       "      <td>102.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>24</td>\n",
       "      <td>30</td>\n",
       "      <td>9.791667</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>164</td>\n",
       "      <td>99.4</td>\n",
       "      <td>0.848630</td>\n",
       "      <td>0.922222</td>\n",
       "      <td>54.3</td>\n",
       "      <td>2824</td>\n",
       "      <td>136</td>\n",
       "      <td>3.19</td>\n",
       "      <td>3.40</td>\n",
       "      <td>8.0</td>\n",
       "      <td>115.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>18</td>\n",
       "      <td>22</td>\n",
       "      <td>13.055556</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>196</td>\n",
       "      <td>196</td>\n",
       "      <td>196</td>\n",
       "      <td>-1</td>\n",
       "      <td>95</td>\n",
       "      <td>109.1</td>\n",
       "      <td>0.907256</td>\n",
       "      <td>0.956944</td>\n",
       "      <td>55.5</td>\n",
       "      <td>2952</td>\n",
       "      <td>141</td>\n",
       "      <td>3.78</td>\n",
       "      <td>3.15</td>\n",
       "      <td>9.5</td>\n",
       "      <td>114.0</td>\n",
       "      <td>5400.0</td>\n",
       "      <td>23</td>\n",
       "      <td>28</td>\n",
       "      <td>10.217391</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>197</td>\n",
       "      <td>197</td>\n",
       "      <td>197</td>\n",
       "      <td>-1</td>\n",
       "      <td>95</td>\n",
       "      <td>109.1</td>\n",
       "      <td>0.907256</td>\n",
       "      <td>0.955556</td>\n",
       "      <td>55.5</td>\n",
       "      <td>3049</td>\n",
       "      <td>141</td>\n",
       "      <td>3.78</td>\n",
       "      <td>3.15</td>\n",
       "      <td>8.7</td>\n",
       "      <td>160.0</td>\n",
       "      <td>5300.0</td>\n",
       "      <td>19</td>\n",
       "      <td>25</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>198</td>\n",
       "      <td>198</td>\n",
       "      <td>198</td>\n",
       "      <td>-1</td>\n",
       "      <td>95</td>\n",
       "      <td>109.1</td>\n",
       "      <td>0.907256</td>\n",
       "      <td>0.956944</td>\n",
       "      <td>55.5</td>\n",
       "      <td>3012</td>\n",
       "      <td>173</td>\n",
       "      <td>3.58</td>\n",
       "      <td>2.87</td>\n",
       "      <td>8.8</td>\n",
       "      <td>134.0</td>\n",
       "      <td>5500.0</td>\n",
       "      <td>18</td>\n",
       "      <td>23</td>\n",
       "      <td>13.055556</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>199</td>\n",
       "      <td>199</td>\n",
       "      <td>199</td>\n",
       "      <td>-1</td>\n",
       "      <td>95</td>\n",
       "      <td>109.1</td>\n",
       "      <td>0.907256</td>\n",
       "      <td>0.956944</td>\n",
       "      <td>55.5</td>\n",
       "      <td>3217</td>\n",
       "      <td>145</td>\n",
       "      <td>3.01</td>\n",
       "      <td>3.40</td>\n",
       "      <td>23.0</td>\n",
       "      <td>106.0</td>\n",
       "      <td>4800.0</td>\n",
       "      <td>26</td>\n",
       "      <td>27</td>\n",
       "      <td>9.038462</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>200</td>\n",
       "      <td>200</td>\n",
       "      <td>200</td>\n",
       "      <td>-1</td>\n",
       "      <td>95</td>\n",
       "      <td>109.1</td>\n",
       "      <td>0.907256</td>\n",
       "      <td>0.956944</td>\n",
       "      <td>55.5</td>\n",
       "      <td>3062</td>\n",
       "      <td>141</td>\n",
       "      <td>3.78</td>\n",
       "      <td>3.15</td>\n",
       "      <td>9.5</td>\n",
       "      <td>114.0</td>\n",
       "      <td>5400.0</td>\n",
       "      <td>19</td>\n",
       "      <td>25</td>\n",
       "      <td>12.368421</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>201 rows × 20 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Unnamed: 0  Unnamed: 0.1  symboling  normalized-losses  wheel-base  \\\n",
       "0             0             0          3                122        88.6   \n",
       "1             1             1          3                122        88.6   \n",
       "2             2             2          1                122        94.5   \n",
       "3             3             3          2                164        99.8   \n",
       "4             4             4          2                164        99.4   \n",
       "..          ...           ...        ...                ...         ...   \n",
       "196         196           196         -1                 95       109.1   \n",
       "197         197           197         -1                 95       109.1   \n",
       "198         198           198         -1                 95       109.1   \n",
       "199         199           199         -1                 95       109.1   \n",
       "200         200           200         -1                 95       109.1   \n",
       "\n",
       "       length     width  height  curb-weight  engine-size  bore  stroke  \\\n",
       "0    0.811148  0.890278    48.8         2548          130  3.47    2.68   \n",
       "1    0.811148  0.890278    48.8         2548          130  3.47    2.68   \n",
       "2    0.822681  0.909722    52.4         2823          152  2.68    3.47   \n",
       "3    0.848630  0.919444    54.3         2337          109  3.19    3.40   \n",
       "4    0.848630  0.922222    54.3         2824          136  3.19    3.40   \n",
       "..        ...       ...     ...          ...          ...   ...     ...   \n",
       "196  0.907256  0.956944    55.5         2952          141  3.78    3.15   \n",
       "197  0.907256  0.955556    55.5         3049          141  3.78    3.15   \n",
       "198  0.907256  0.956944    55.5         3012          173  3.58    2.87   \n",
       "199  0.907256  0.956944    55.5         3217          145  3.01    3.40   \n",
       "200  0.907256  0.956944    55.5         3062          141  3.78    3.15   \n",
       "\n",
       "     compression-ratio  horsepower  peak-rpm  city-mpg  highway-mpg  \\\n",
       "0                  9.0       111.0    5000.0        21           27   \n",
       "1                  9.0       111.0    5000.0        21           27   \n",
       "2                  9.0       154.0    5000.0        19           26   \n",
       "3                 10.0       102.0    5500.0        24           30   \n",
       "4                  8.0       115.0    5500.0        18           22   \n",
       "..                 ...         ...       ...       ...          ...   \n",
       "196                9.5       114.0    5400.0        23           28   \n",
       "197                8.7       160.0    5300.0        19           25   \n",
       "198                8.8       134.0    5500.0        18           23   \n",
       "199               23.0       106.0    4800.0        26           27   \n",
       "200                9.5       114.0    5400.0        19           25   \n",
       "\n",
       "     city-L/100km  diesel  gas  \n",
       "0       11.190476       0    1  \n",
       "1       11.190476       0    1  \n",
       "2       12.368421       0    1  \n",
       "3        9.791667       0    1  \n",
       "4       13.055556       0    1  \n",
       "..            ...     ...  ...  \n",
       "196     10.217391       0    1  \n",
       "197     12.368421       0    1  \n",
       "198     13.055556       0    1  \n",
       "199      9.038462       1    0  \n",
       "200     12.368421       0    1  \n",
       "\n",
       "[201 rows x 20 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_data=df.drop('price',axis=1)\n",
    "x_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we randomly split our data into training and testing data  using the function <b>train_test_split</b>. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of test samples : 31\n",
      "number of training samples: 170\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.15, random_state=1)\n",
    "\n",
    "\n",
    "print(\"number of test samples :\", x_test.shape[0])\n",
    "print(\"number of training samples:\",x_train.shape[0])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The <b>test_size</b> parameter sets the proportion of data that is split into the testing set. In the above, the testing set is set to 10% of the total dataset. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #1):</h1>\n",
    "\n",
    "<b>Use the function \"train_test_split\" to split up the data set such that 40% of the data samples will be utilized for testing, set the parameter \"random_state\" equal to zero. The output of the function should be the following:  \"x_train_1\" , \"x_test_1\", \"y_train_1\" and  \"y_test_1\".</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of test samples : 81\n",
      "number of training samples: 120\n"
     ]
    }
   ],
   "source": [
    "# Write your code below and press Shift+Enter to execute \n",
    "x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.4, random_state=0)\n",
    "\n",
    "print(\"number of test samples :\", x_test.shape[0])\n",
    "print(\"number of training samples:\",x_train.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.4, random_state=0) \n",
    "print(\"number of test samples :\", x_test1.shape[0])\n",
    "print(\"number of training samples:\",x_train1.shape[0])\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's import <b>LinearRegression</b> from the module <b>linear_model</b>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " We create a Linear Regression object:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "lre=LinearRegression()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "we fit the model using the feature horsepower "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lre.fit(x_train[['horsepower']], y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's Calculate the R^2 on the test data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7139364665406973"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lre.score(x_test[['horsepower']], y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "we can see the R^2 is much smaller using the test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5754067463583004"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lre.score(x_train[['horsepower']], y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #2): </h1>\n",
    "<b> \n",
    "Find the R^2  on the test data using 90% of the data for training data\n",
    "</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7340722810055448"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Write your code below and press Shift+Enter to execute \n",
    "x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
    "lre.fit(x_train1[['horsepower']],y_train1)\n",
    "lre.score(x_test1[['horsepower']],y_test1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
    "lre.fit(x_train1[['horsepower']],y_train1)\n",
    "lre.score(x_test1[['horsepower']],y_test1)\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Sometimes you do not have sufficient testing data; as a result, you may want to perform Cross-validation. Let's  go over several methods that you can use for  Cross-validation. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Cross-validation Score</h2>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets import <b>model_selection</b> from the module <b>cross_val_score</b>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We input the object, the feature in this case ' horsepower', the target data (y_data). The parameter 'cv'  determines the number of folds; in this case 4. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "Rcross = cross_val_score(lre, x_data[['horsepower']], y_data, cv=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default scoring is R^2; each element in the array has the average  R^2 value in the fold:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.7746232 , 0.51716687, 0.74785353, 0.04839605])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Rcross"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " We can calculate the average and standard deviation of our estimate:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The mean of the folds are 0.522009915042119 and the standard deviation is 0.2911839444756029\n"
     ]
    }
   ],
   "source": [
    "print(\"The mean of the folds are\", Rcross.mean(), \"and the standard deviation is\" , Rcross.std())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can use negative squared error as a score by setting the parameter  'scoring' metric to 'neg_mean_squared_error'. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([20254142.84026704, 43745493.26505169, 12539630.34014931,\n",
       "       17561927.72247591])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "-1 * cross_val_score(lre,x_data[['horsepower']], y_data,cv=4,scoring='neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #3): </h1>\n",
    "<b> \n",
    "Calculate the average R^2 using two folds, find the average R^2 for the second fold utilizing the horsepower as a feature : \n",
    "</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5166761697127429"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Write your code below and press Shift+Enter to execute \n",
    "Rc=cross_val_score(lre,x_data[['horsepower']], y_data,cv=2)\n",
    "Rc.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "Rc=cross_val_score(lre,x_data[['horsepower']], y_data,cv=2)\n",
    "Rc.mean()\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also use the function 'cross_val_predict' to predict the output. The function splits up the data into the specified number of folds, using one fold to get a prediction while the rest of the folds are used as test data. First import the function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We input the object, the feature in this case <b>'horsepower'</b> , the target data <b>y_data</b>. The parameter 'cv' determines the number of folds; in this case 4. We can produce an output:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([14141.63807508, 14141.63807508, 20814.29423473, 12745.03562306,\n",
       "       14762.35027598])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yhat = cross_val_predict(lre,x_data[['horsepower']], y_data,cv=4)\n",
    "yhat[0:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1 id=\"ref2\">Part 2: Overfitting, Underfitting and Model Selection</h1>\n",
    "\n",
    "<p>It turns out that the test data sometimes referred to as the out of sample data is a much better measure of how well your model performs in the real world.  One reason for this is overfitting; let's go over some examples. It turns out these differences are more apparent in Multiple Linear Regression and Polynomial Regression so we will explore overfitting in that context.</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create Multiple linear regression objects and train the model using <b>'horsepower'</b>, <b>'curb-weight'</b>, <b>'engine-size'</b> and <b>'highway-mpg'</b> as features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LinearRegression()\n",
    "lr.fit(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Prediction using training data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([38237.3225152 ,  8757.67570728, 16832.43125207, 16093.28264058,\n",
       "       14757.89820098])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yhat_train = lr.predict(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "yhat_train[0:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Prediction using test data: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5114.7345989 , 10941.98915173, 20956.19697977, 20968.65125706,\n",
       "       19966.75504097])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yhat_test = lr.predict(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "yhat_test[0:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's perform some model evaluation using our training and testing data separately. First  we import the seaborn and matplotlibb library for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's examine the distribution of the predicted values of the training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "image/png": "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mbsdixYtYvXq1ezZs4e+ffvywAMP5C4brkmTJsybNy+m2MOF4nXO8corrxR6+Tlz5tC8efNCLxdvStRFREREkmTIkCH7jUTSt29f3nzzTbp3707Pnj3JysoiMzOTJ554AoBLL72Uq6++mszMTLZu3co999zDjTfeSMeOHSlTpkxuO3/+85+5/fbbOemkk9i9e3dM8WRkZNC3b1/WrFlDp06dCtVW3759Wbt2LZmZmTz33HO55SZNmzblwQcfpGvXrrRs2ZIuXbqwfPlyfvnlFzp37kxmZiaXXnppxB73Hj165NadF8a9995Lnz59OPnkk6lbt26hlx8zZkyJGKLRwrv5Za+srCw3ZcqUZIchIiIiCTRr1qyYa6AlOfr06cNjjz1Go0aNimV9zjk6duzIhx9+SLVq1eLadqTXm5lNdc5FPDNYPeoiIiIiUmI9+uijLF++vNjWt3LlSv785z/HPUkvCp1MKiIiIiIl1vHHHx91/Pd4q1u3Lj179iy29UWjHnURERERkRJIibqIiIiISAmkRF1EREREpARSoi4iB845+O47eOIJuOYaCMb6FRERkaJToi4iRTdlCgwcCIcfDq1awaBB8MILcOaZsHlzsqMTESkVypQpQ2ZmJs2bN+e8887LvcBRUYwdO5azzjoLgJEjR+Z7RU6A9evX8+yzzxZ6Hffee2/umO7h683JydnnsV27dlG3bt2oI7ZEaivezj33XH7++WfatWtHZmYmRx55JLVr1yYzM5PMzEwWLlwYc1t33nknY8aMiTrPiBEjeOCBBw4wak+JuogUzYYNPiEfORI6d4b//AeWLoVhw2DSJOjdG2K87LOISDqrVKkS06dPZ+bMmZQvX57nn39+n+nOOfbs2VPodnv27Mltt92W7/SiJuqRdOrUiaVLl+6T9H722Wc0b96cww47LC7rKIoffviB3bt3c/TRRzNx4kSmT5/O/fffzwUXXMD06dOZPn06DRo02GeZaBeHeuihhzjllFOirrNXr1688847bIvDd6ASdREpmgcegFWr4NNPYcgQuPRSqFcP+vSBwYPh88+hf3/YtSvZkYqIxOSmm3y/Qzz/brqpcDF07NiRefPmsXDhQpo0acK1115L69atWbJkCaNHjyYnJ4fWrVtz3nnnsTk4cvnJJ5/QuHFjOnTowLvvvpvb1ssvv8z1118PwK+//kqfPn1o1aoVrVq1Yvz48dx2223Mnz+fzMxMBg0aBMDjjz9OdnY2LVu25J577slt66GHHuL444/n9NNPZ/bs2fvFnZGRwXnnncdbb72V+9jQoUPp378/AC+++CLZ2dm0atWKvn37Rjxq0LlzZ0IXm1y9enVuAr17924GDRqUG9e//vUvAJYvX06nTp1yj0Z89dVX+7X5xhtv0KtXr6j7fNeuXVSvXp277rqLtm3bMmnSJO655x6ys7Np3rw5V199NaELhF588cWMGDECgPr163Pvvfdywgkn0LJlS+bMmQOAmdGxY0c++uijqOuNhRJ1ESm82bPh73+Hyy6DrAgXUxs4EJ5+GkaMgMsvhyL0BImIpJtdu3bx8ccf06JFCwBmz57NgAED+Pbbb6lSpQoPPvggn332GdOmTSMrK4u//vWvbNu2jd/97ne8//77fPXVV6xYsSJi2zfccAMnn3wyM2bMYNq0aTRr1oxHH32UY445hunTp/P4448zevRo5s6dy6RJk5g+fTpTp07lyy+/ZOrUqQwdOpRvv/2Wd999l8mTJ0dcR//+/Rk6dCgA27dv56OPPqJv374AnHPOOUyePJkZM2bQpEkTXnrppZj3y0svvUS1atWYPHkykydP5sUXX2TBggW8+eabdOvWjenTpzNjxgwyMzP3W3bcuHG0adOmwHVs2LCB1q1bM2nSJHJycrjxxhuZPHky33//PRs2bOCTTz6JuFzdunX59ttvufLKK/nrX/+a+3hWVlbEHw6FpQseiUjh/fGPULkyPPxw/vP84Q++PObuu6FlS7jlluKLT0SkCJ56Kjnr3bp1a26S2bFjR6644gqWLVvGUUcdRfv27QGYMGECP/74IyeddBIAO3bsICcnh59++omGDRvSqFEjwPf4vvDCC/ut44svvuDVV18FfE18tWrVWLdu3T7zjB49mtGjR3PCCScAsHnzZubOncumTZvo06cPlStXBsj3YkDZ2dls3ryZ2bNnM2vWLNq3b88hhxwCwMyZM7nrrrtYv349mzdvplu3bjHvn9GjR/Pdd98xbNgwwCfVc+fOJTs7m8svv5ydO3fSu3fviIn68uXLqV27doHrKF++PH369Mm9//nnn/P444+zbds2Vq9eTZs2bejRo8d+y51zzjkAtGnTZp8e9Dp16rBs2bKYtzE/StRFpHA++sj/PfEE1K0bfd4774Qvv4S//hVuuAHKly+eGEVESpFQjXpeVapUyf3fOUeXLl0YMmTIPvNMnz4dM4tLHM45br/9dq666qp9Hn/qqadiXke/fv0YOnQos2bNyi17Abj00ksZMWIErVq14uWXX2bs2LH7LVu2bNncWvzw+m7nHP/4xz8iJvdffvklH374IZdccgmDBg1iwIAB+0yvVKlSTLXilSpVyt3G3377jeuvv55p06ZRr1497rrrrnzbqFChAuB//OwKK/Xctm0blSpVKnC9BVHpi4jEbscOuPlmOP5432NeEDP4059g+XIIq1sUEZHCad++PePGjfQiNukAACAASURBVGPevHmATybnzJlD48aNWbBgAfPnzwfYL5EPOe2003juuecAX/O9ceNGqlatyqZNm3Ln6datG4MHD86tff/ll19YuXIlnTp1Yvjw4WzdupVNmzbx/vvv5xtn//79ef311/niiy/26XnftGkThx12GDt37uSNN96IuGyDBg2YOnUqQG7veSiu5557jp07dwIwZ84ctmzZwqJFi6hTpw6/+93vuOKKK5g2bdp+bTZp0iR3n8Vq69atZGRkUKtWLTZt2sQ777xTqOVDMTZv3rzQy+WlRF1EYvf00zBnDvztb7H3jnftCk2b+l714GQcEREpnNq1a/Pyyy/Tv39/WrZsSfv27fnpp5+oWLEiL7zwAmeeeSYdOnTgqKOOirj83//+d8aMGUOLFi1o06YNP/zwAzVr1uSkk06iefPmDBo0iK5du3LhhReSk5NDixYtOPfcc9m0aROtW7fmggsuIDMzk759+9KxY8d842zatCmVK1fm1FNP3eeIwAMPPEC7du3o0qULjRs3jrjsLbfcwnPPPceJJ57I6tWrcx+/8soradq0Ka1bt6Z58+ZcddVV7Nq1i7Fjx5KZmckJJ5zAO++8w4033rhfm2eeeWbE3vtoatasycCBA2nevDl9+vShXbt2hVoeYMyYMZxxxhmFXi4vc/rijCgrK8uFzjwWEWDTJj+qS6dO8MEHhVv23/+G3/0OvvgCChjWSkSkOM2aNYsmTZokOwxJkK1bt3LKKacwbtw4ypQpUyzrXLZsGZdeeimjR4/eb1qk15uZTXXORRiZQT3qIhKrjz/2yfqttxZ+2Ysugtq1fa+6iIhIMalUqRL33Xcfv/zyS7Gtc8mSJXG7iJNOJhWR2IwY4ZPt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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Title = 'Distribution  Plot of  Predicted Value Using Training Data vs Training Data Distribution'\n",
    "DistributionPlot(y_train, yhat_train, \"Actual Values (Train)\", \"Predicted Values (Train)\", Title)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figure 1: Plot of predicted values using the training data compared to the training data. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So far the model seems to be doing well in learning from the training dataset. But what happens when the model encounters new data from the testing dataset? When the model generates new values from the test data, we see the distribution of the predicted values is much different from the actual target values. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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gKuDZRaZ2dv4E04PA3c75/KBjWb2B2CqmeUBa4FbkrXdIiIiIpI8rVq1olWrVklrv2vXrklru7iSVvpyvFPpi4iIyIlHpS+STOWp9EVEREREREpIibqIiIiISDmkRF2kPHIORo2Chx6COIfQEhERkYpFibpIebNzJ1x7Ldx6Kzz6KPz4x0rWRUROIJUrVyYjI4N27dpx9dVXF1zgqCSmTJnCpZdeCsD48eN58skno867c+dOnn/++WKv4+GHHz5mlJQpU6bQvXv3o6YdPnyYJk2axByxJVJbiXbVVVexatUqunbtSkZGBs2bN6dRo0ZkZGSQkZHBmjVritXee++9xzfffFNw/957741rrPd4KFEXKU9mzYKMDBg3Dp58Ev7wB3jtNbjjDgi7DLOIiFRcNWrUIDs7m4ULF3LSSSfxwgsvHPW4c44jJfhMuPzyyxk+fHjUx0uaqEfSp08fNmzYcFTS++mnn9KuXTtOO+20hKyjJBYtWkR+fj5nnnkmX3zxBdnZ2TzyyCNce+21ZGdnk52dTVpaWrHaLJyo/+xnP4t4saaSUKIuUh44B3/8I/TuDWYwfTo88IAvfXnoIRg5Eu66S8m6iEgZuvde6Ns3sX/33lu8GHr37s2KFStYs2YNbdq04b/+67/IzMxk/fr1TJo0ie7du5OZmcnVV1/Nnj17APjoo49o3bo1vXr14r333itoa9SoUdxzzz0AfPvtt1x55ZWkp6eTnp7OzJkzGT58OCtXriQjI4P7778fgD//+c906dKFDh068Pvf/76grccff5xWrVoxYMAAli5dekzclSpV4uqrr+att94qmDZmzBiGDRsGwEsvvUSXLl1IT09n6NChEX816Nu3L6ER+LZt21aQQOfn53P//fcXxPX3v/8dgE2bNtGnT5+CXyOmTZt2TJtvvPEGQ4YMKXK/T5w4sWDfXnvttezduxeA+++/n7Zt29KhQwceeOABpk2bxoQJE7jvvvsKeuPPOussNm3axNatW4tcT1GUqIuUB2PHwm9+A1ddBdnZED6G68MPw69/DS+9BPfc45N6ERGp8A4fPszEiRNp3749AEuXLuWmm27iq6++olatWjz22GN8+umnzJs3j86dO/P0009z4MABbr/9dj744AOmTZvG5s2bI7b985//nPPPP5/58+czb948zj33XJ588knOOusssrOz+fOf/8ykSZNYvnw5X375JdnZ2cydO5epU6cyd+5cxowZw1dffcV7773HnDlzIq5j2LBhjBkzBoCDBw8yYcIEhg4dCsAPf/hD5syZw/z582nTpg2vvPJK3PvllVdeoU6dOsyZM4c5c+bw0ksvsXr1at58800GDRpEdnY28+fPJyMj45hlZ8yYQadOnWK2v2XLFp588kkmT57MvHnz6NChA3/961/59ttvmTBhAosWLWLBggU8+OCD9O7dm4svvphnnnnmqN74jh07MnPmzLi3KZqkXfBIRIrhpZegeXN4802oVOj7sxk89hjk5cGf/wxpaZwiQ5IAACAASURBVPCrX6UkTBGRE8mzz6Zmvfv37y9IMnv37s1tt93Gxo0badGiBd26dQNg9uzZLF68mJ49ewJw6NAhunfvzjfffEPLli05++yzAbjhhht48cUXj1nHZ599xmuvvQb4mvg6derw3XffHTXPpEmTmDRpEh07dgRgz549LF++nN27d3PllVdSs2ZNwJfURNKlSxf27NnD0qVLWbJkCd26daNevXoALFy4kN/+9rfs3LmTPXv2MGjQoLj3z6RJk1iwYAFjx44FIDc3l+XLl9OlSxd+/OMfk5eXxxVXXBExUd+0aRONGjU6Znq4mTNnsnjxYnr06AH4fdurVy/q169PpUqVuP3227nkkksKav8jady4MRs3box7m6JRoi6SamvXwqef+hKXwkl6iBn86U++t/1vf4P//m+oopeviEhFFKpRL6xWrVoF/zvnuPDCCxk9evRR82RnZ2NmCYnDOceDDz7InXfeedT0Z599Nu51XHfddYwZM4YlS5YUlL0A3HLLLbz//vukp6czatQopkyZcsyyVapUKajFP3DgwFFx/e///m/E5H7q1Kn8+9//5sYbb+T+++/npptuOurxGjVqHNVWJM45Bg8ezD//+c9jHsvKyuKTTz5hzJgxjBgxgkmTJkVs48CBA9SoUSPmeuKh0heRVBs1yt/eemvs+cx8nXpODnz0UdLDEhGR8qtbt27MmDGDFStWALBv3z6WLVtG69atWb16NStXrgQ4JpEPueCCCxgxYgTga7537dpF7dq12b17d8E8gwYNYuTIkQW17zk5OWzZsoU+ffowbtw49u/fz+7du/nggw+ixjls2DBef/11Pvvss6N63nfv3s1pp51GXl4eb7zxRsRl09LS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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Title='Distribution  Plot of  Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
    "DistributionPlot(y_test,yhat_test,\"Actual Values (Test)\",\"Predicted Values (Test)\",Title)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figur 2: Plot of predicted value using the test data compared to the test data. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>Comparing Figure 1 and Figure 2; it is evident the distribution of the test data in Figure 1 is much better at fitting the data. This difference in Figure 2 is apparent where the ranges are from 5000 to 15 000. This is where the distribution shape is exceptionally different. Let's see if polynomial regression also exhibits a drop in the prediction accuracy when analysing the test dataset.</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h4>Overfitting</h4>\n",
    "<p>Overfitting occurs when the model fits the noise, not the underlying process. Therefore when testing your model using the test-set, your model does not perform as well as it is modelling noise, not the underlying process that generated the relationship. Let's create a degree 5 polynomial model.</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's use 55 percent of the data for testing and the rest for training:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.45, random_state=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will perform a degree 5 polynomial transformation on the feature <b>'horse power'</b>. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PolynomialFeatures(degree=5, include_bias=True, interaction_only=False)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pr = PolynomialFeatures(degree=5)\n",
    "x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
    "x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
    "pr"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's create a linear regression model \"poly\" and train it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly = LinearRegression()\n",
    "poly.fit(x_train_pr, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see the output of our model using the method  \"predict.\" then assign the values to \"yhat\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 6728.73877623,  7308.06173582, 12213.81078747, 18893.1290908 ,\n",
       "       19995.81407813])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yhat = poly.predict(x_test_pr)\n",
    "yhat[0:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's take the first five predicted values and compare it to the actual targets. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted values: [ 6728.73877623  7308.06173582 12213.81078747 18893.1290908 ]\n",
      "True values: [ 6295. 10698. 13860. 13499.]\n"
     ]
    }
   ],
   "source": [
    "print(\"Predicted values:\", yhat[0:4])\n",
    "print(\"True values:\", y_test[0:4].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use the function \"PollyPlot\" that we defined at the beginning of the lab to display the training data, testing data, and the predicted function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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oV/+8pf68Y9/rBUrVqh///66+eabKz32z3/+c1122WVavHixiouLdezYMc2dO1fr169XRkaGJGnZsmXKysrS6tWrZa3VlClT9PHHH6tdu3Z67bXX9NVXX6moqEjx8fEaNWpUpa/z5JNP6q9//ask6dFHH9XEiROrfc+bN2/WBx98oKNHj2rgwIGaNWuWvv76ayUnJ+uzzz5Tly5ddPDgQXXq1ElTpkzRddddp6lTp5Y7xokTJ3TnnXcqNTVVF1xwgaZPn65nn31W999/vySpS5cu+vLLLzV//nw9/vjjev7552v091EdRtIBAABauOPHjysuLk4ej0dRUVGaMWOGJCk6OlpjxoyRJK1atUobN27UuHHjFBcXpwULFignJ0ebN29Wnz59NGDAABljdNttt1X6GitWrNCsWbMk+efAR0ZGnrHNsmXLtGzZMo0cOVLx8fHavHmzsrKy9Mknn+jGG29URESEOnTooClTplT5XspOdzlbQJeka6+9Vm3btlWXLl3UrVs37dmzRytWrNDUqVPVpUsXSVKnTp2qPcaWLVvUp08fXXDBBZKkO+64Qx9//PHp52+66SZJ0qhRo5SdnX3WnmqCkXQAAIAmUtMR74ZWOie9onbt2p2+b63VVVddpVdffbXcNhkZGTLGNEgf1lo99NBD+slPflKuPm/evHq9RkhIyOk59SdOnCj3XNu2bU/fDw4OVlFRkay1tXo9a221z5e+RunxGwIj6QAAANCYMWP02WefaevWrZKkgoICff311xo0aJC++eYbbdu2TZLOCPGlEhIS9Oyzz0qSiouLdeTIEbVv315Hjx49vc3EiRP14osvnp7r/u2332rv3r269NJLtXjxYh0/flxHjx7V0qVLa9V7TEyM0tPTJUlvvvnmWbdPSEjQokWLdODAAUnSwYMHJemMfksNGjRI2dnZp/9sXnnlFV122WW16rG2COkAAABQ165d9fLLL+vWW2/V8OHDNWbMGG3evFlhYWFKSUnRtddeq/Hjxys6OrrS/Z966il98MEHio2N1ahRo7RhwwZ17txZ48aN07Bhw/Tggw/q6quv1g9/+EONHTtWsbGxmjp1qo4ePar4+HjdfPPNiouL0/e//31dcskltep9zpw5uu+++3TJJZcoODj4rNsPHTpUSUlJuuyyyzRixAj94he/kCTdcssteuyxxzRy5MjT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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train, y_test, poly,pr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figur 4 A polynomial regression model, red dots represent training data, green dots represent test data, and the blue line represents the model prediction. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that the estimated function appears to track the data but around 200 horsepower, the function begins to diverge from the data points. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " R^2 of the training data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5567716902028981"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly.score(x_train_pr, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " R^2 of the test data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-29.87162132967278"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly.score(x_test_pr, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see the R^2 for the training data is 0.5567 while the R^2 on the test data was -29.87.  The lower the R^2, the worse the model, a Negative R^2 is a sign of overfitting."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see how the R^2 changes on the test data for different order polynomials and plot the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(3, 0.75, 'Maximum R^2 ')"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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94/KysqkyzDr8ubNm8eAAQPo2bMnBxxwACtWrKBHjx5s2bKFkSNHUl9fz6pVq9i9ezdFRUVUVlbSvXt33nrrLbZt20ZlZSXbtm1j+fLlHHnkkWzYsIGtW7dy2GGHUVtbiyS2b9/Ozp07qaysZP369dTX11NeXs6e/8fnzZvHcccdB8DGjRupq6ujsrKy1f0zLVq0iMGDB1NeXs727dtZtmwZY8aMAWD9+vXU1dUxbNiwd993xYoVjBgxgrKy911kmK1bt/Laa69xxBFH5PTfvyPNnTv37YioyDozIrrMY9y4cWFmuVdeXh4vv/xyfOxjH4tt27bFscceG08++WScf/75ERFRV1cXu3btioiIGTNmxEc/+tGIiGhsbIzTTjstHnzwwRg3blw888wzERFx7733xnXXXRcREVdddVVceumlsXv37nj44Yejd+/e8corr0RjY2Mcf/zxMW/evHdr2OPXv/51XHXVVW3qn+mMM86IOXPmRETEHXfcEbfeemu7/l2uu+66+OpXv9quvkkBaqKZz9SSXCZT+uJedwHFpE7C+UaT+V8kdWEzgBLgSKAiIjZIqiV1HHkj0BAR1bms1cza5phjjqG2tpZf/vKXfPCDH3zfvLq6Oq666iqWLFmCJHbtSl3RpKioiPvuu49jjjmGa6+9lgkTsl+A94ILLkASRx99NAMHDuToo48GYMyYMdTW1jJ27N7Pq2xP/yuvvJL6+noaGxt58cUX2/zv8fOf/5yamhpmzZrV5r75Kme/QSh1B667SV2tczRwuTIuVwwQEf8ZEWMjYiypewLMiogNGU3OTM93OJjloQsvvJAvfOELXH755e+b/uUvf5kzzzyT+fPn8/vf/57t298753DJkiX06tWLNWvWNPu+3bp1A1KBsuf5ntcNDal7FWWeLJ75/q3t39QvfvELVqxYwRVXXMF111231/VuaubMmXz961/nkUceed/yCl0uf6QeDyyN1JUmd5I6w/OivbS/HPhlDusxsw529dVX85WvfOXdb+h71NXVMWhQ6krn99133/um33DDDcyePZv169fzm9/8pt3LHjhwIAsXLmT37t089NBD7X6fTKWlpXzta1/jueeeY+HCha3qM2/ePK699loeeeQRBgwY0CF15ItcBsQgMq5sCaymmWvjS+pJ6lIHmafnB6nLAcyVNKW5hUiaotSNXmrWrVvXAWWbWWsNHjyYG2644R+mf+lLX+LWW29lwoQJNDa+d0mrG2+8kc9+9rOMGjWKH/3oR9xyyy2sXbu2Xcv+xje+wYc+9CEmTZrEIYcc0u51aKpHjx7cfPPNfOtbrbuG5Be/+EW2bNnCJZdcwtixY7nwwgs7rJak5ewoJkmXAB+IiGvSr/8JGB9Zbvoi6VJSdxC7IGPaoRGxRtIAYAZwfUTM3tsyq6uro6ampkPXw8ysK5M0t7nd+LkcQawGhmS8Hkzq7NJsLqPJ7qWIWJP+u5bUxb9afXcsMzPbd7kMiDlAlaRh6UsfXwY80rSRpL6k7jz1u4xp5UrfzzZ9TZtzgPk5rNXMzJrI2WGuEdGQvtvXY6QOc/1xRCyQtOeSwnsuzfwRYHpE1Gd0Hwg8lD5KoQT474h4NFe1WueJCHY27mbrjkbqdzawdWcj9TsaqH/3der51p0NbN+1uwOW1wE1t/uuoR1ZQwfogEKKisSlJwzhkL49Wm5sBa9LnUnt3yA6VkSwfdfu1Ad3lg/wLem/9U3/7mxk646G9wVA5t+G3V3nv7lC07rbCDUvAs4dczDf/6dxHVOQJW5vv0Hk9EQ56zy7dwdbd+35YM74UM74cG/6QZ2tTdPprf3+IEF5WQk9y4op71ZCebdiepaVcFB5GUMO7El5Wer1nunlZcX07FaS6tOt+P190/O6lRRRtK+faOz7fS87oIT3HbNfyO6cuZg7Zy5h/ut1HDWob9LlWI45IBLQ0Lg79S17r9++U3+3ZH54Z/kQ39N3267W3x2zuEiUv/tBXvLuh/chfbs38yHe5MP93fnvfbh3Ly3qMh+C1ryrTx3Gvc/WcvuMxfz4kyckXY7lmANiL5rbX97St+/6PR/wzQTAzobW71svKyl69wO6V7f3PpAPKi+jvNt737p7lhVn/TaebX5ZsT/MrX36dC/l2jOG881HFzF35UbGDT0g6ZIshxwQwLU/q6Fu26593l/eo7SY8m57PpBT37z79Cjd+zfzvXxD71lWTGmxr8hu+eWqkyv50dMruGPGYn5+zYlJl2M55IAANtbvArFP+8t7lBZTXORv5db1lXcr4TMTR/C1Py7kueXrOWn4QUmXZDnio5jMrM2272rk9G8+SeVB5fzq2pO8y7KAJXUmtZl1Ud1Li5k2aSQv1G7gmaVvJ12O5YgDwsza5dIThjCoXw9um76YrrQnwt7jgDCzdulWUsz1k0by0qpNPPH39l2R1fKbA8LM2u1j4wZz2IE9uX3GYnb7DPkuxwFhZu1WWlzE58+uYsGazTy24M2ky7EO5oAws31y0dhBjKgo546Zi2n0KKJLcUCY2T4pLhI3Th7F4re28IdXmr/PtBUeB4SZ7bMPHnUIRxzcmztnLqGhcd8v0275wQFhZvusKD2KWPF2PQ/Nez3pcqyDOCDMrEOcM3ogRw/qy12PL2nTBSktfzkgzKxDSOKmc0axeuM2fj13VdLlWAdwQJhZh5k4qoJxQw/gu08sZXsb7lFi+ckBYWYdRhI3Tx7FG3Xb+eULryVdju0jB4SZdahTRvbnpOEHcveTy9i206OIQpbTgJB0rqRFkpZKuiXL/C9Kein9mC+pUdKBrelrZvnr5nMO5+0tO/jpX2uTLsX2Qc4CQlIxcDdwHjAauFzS6Mw2EfGfETE2IsYCtwKzImJDa/qaWf46ofJATh9VwfdnLWPLjoaky7F2yuUIYjywNCKWR8RO4H7gor20vxz4ZTv7mlmeuWnyKDZu3cV9z65IuhRrp1wGxCAg81i31elp/0BST+Bc4Lft6DtFUo2kmnXr1u1z0WbWMcYO6cfZRw7kntnLqdu2K+lyrB1yGRDZ7kHY3JW8LgCejYgNbe0bEfdERHVEVFdUVLSjTDPLlZsmj2Lz9gZ+9PTypEuxdshlQKwGhmS8Hgw0dyWvy3hv91Jb+5pZnhp9aB/OP/oQfvxsLRvqdyZdjrVRLgNiDlAlaZikMlIh8EjTRpL6AmcAv2trXzPLf58/u4r6nQ38YPaypEuxNspZQEREAzANeAxYCDwQEQskTZU0NaPpR4DpEVHfUt9c1WpmuVM1sDcXHXsoP/lLLWvf2Z50OdYG6ko3G6+uro6ampqkyzCzJla8Xc/Zt8/iEycP5V8uGJN0OZZB0tyIqM42z2dSm1nODetfzseOH8Qvnn+NN+q2JV2OtZIDwsw6xfWTqogI7n5yadKlWCs5IMysUww5sCeXnjCEX81ZxaoNW5Mux1rBAWFmnWbamVVI4jtPLEm6FGsFB4SZdZqD+3bn4ycO5bcvvs6Kt+tb7mCJckCYWaf6zMQRlBUXcdfMxUmXYi1wQJhZp6ro3Y1PnDKU3728hiVvvZN0ObYXDggz63RTTx9BeVkJd3gUkdccEGbW6Q4oL+PqCZX86dU3WbCmLulyrBkOCDNLxKdPG06f7iXcMcOjiHzlgDCzRPTtUcqU04czc+FaXlq1KelyLAsHhJkl5pMThnFAz1Ju9ygiLzkgzCwxvbqV8JmJI5i9eB1zaje03ME6lQPCzBL1TydVUtG7G996bBFd6erSXYEDwswS1aOsmOsmjuD5FRv4y7L1SZdjGRwQZpa4y8YfxiF9u3PbdI8i8okDwswS1720mGmTRvLia5t4avG6pMuxNAeEmeWFS8YNYciBPbh9+mKPIvKEA8LM8kJZSRGfm1TFq6/XMf1vbyVdjuGAMLM88pHjBjG8fzl3zFjM7t0eRSTNAWFmeaOkuIgbzq7i72++wx9ffSPpcvZ7OQ0ISedKWiRpqaRbmmkzUdJLkhZImpUxvVbSq+l5Nbms08zyxwXHHMqogb24Y+ZiGhp3J13Ofi1nASGpGLgbOA8YDVwuaXSTNv2A7wEXRsQY4JImb3NmRIyNiOpc1Wlm+aWoSNw0eRTL19Xzu5fWJF3Ofi2XI4jxwNKIWB4RO4H7gYuatLkCeDAiXgOIiLU5rMfMCsQHxhzMmEP7cNfjS9jlUURichkQg4BVGa9Xp6dlGgUcIOkpSXMlfSJjXgDT09OnNLcQSVMk1UiqWbfOx0+bdQVSahTx2oat/Hbu6qTL2W/lMiCUZVrTwxJKgHHA+cAHgC9LGpWeNyEijie1i+o6SadnW0hE3BMR1RFRXVFR0UGlm1nSJh0xgLFD+vHtx5ewo6Ex6XL2S7kMiNXAkIzXg4GmOxRXA49GRH1EvA3MBo4FiIg16b9rgYdI7bIys/2EJG4+ZxRr6rbzqzmrWu5gHS6XATEHqJI0TFIZcBnwSJM2vwNOk1QiqSdwIrBQUrmk3gCSyoFzgPk5rNXM8tCpI/szftiBfPeJpWzf5VFEZ8tZQEREAzANeAxYCDwQEQskTZU0Nd1mIfAo8ArwAvDDiJgPDASekfRyevofI+LRXNVqZvlJEjdPHsXad3bw8+dWJl3Ofkdd6Zon1dXVUVPjUybMupqP//B5Fr6xmdlfOpPybiVJl9OlSJrb3KkEPpPazPLeTeeMYn39Tu77S23SpexXHBBmlveOP+wAJh0xgHtmL2fz9l1Jl7PfcECYWUG4afIo6rbt4kdPr0i6lP2GA8LMCsJRg/py7piD+fEzK9i0dWfS5ewXHBBmVjBunDyKLTsbuGf28qRL2S84IMysYBx+cG8uOOZQ7n22lre37Ei6nC7PAWFmBeWGs6vY0dDI959alnQpXZ4DwswKyoiKXnzkuMH87LmVvLV5e9LldGkOCDMrODecVUXj7uDuJ5cmXUqX5oAws4Jz2EE9uaR6CL984TVWb9yadDldlgPCzArS9ZNGIsR3n/AoIlccEGZWkA7t14MrTjyMX89dzcr19UmX0yU5IMysYH124ghKisRdjy9JupQuyQFhZgVrQJ/uXHVKJQ/Pe52la7ckXU6X44Aws4J27enD6V5azJ0zFyddSpfjgDCzgnZQr25cPWEYf3jlDRa+sTnpcroUB4SZFbz/edpwencv4Y4ZHkV0JAeEmRW8vj1LuebU4Uz/21u8urou6XK6DAeEmXUJV59aSb+epdw2Y1HSpXQZDggz6xJ6dy/l2tNH8NSidcxduSHpcrqEnAaEpHMlLZK0VNItzbSZKOklSQskzWpLXzOzTFedMpT+vcq4bbp/i+gIOQsIScXA3cB5wGjgckmjm7TpB3wPuDAixgCXtLavmVlTPctK+MzEkfxl2Xr+umx90uUUvFyOIMYDSyNieUTsBO4HLmrS5grgwYh4DSAi1rahr5nZP7jyxMMY2Kcbt89YREQkXU5By2VADAJWZbxenZ6WaRRwgKSnJM2V9Ik29AVA0hRJNZJq1q1b10Glm1mh6l5azLRJVcyp3cjsJW8nXU5By2VAKMu0pnFeAowDzgc+AHxZ0qhW9k1NjLgnIqojorqiomJf6jWzLuLS6iEM6teD26d7FLEvchkQq4EhGa8HA2uytHk0Iuoj4m1gNnBsK/uamWVVVlLE584aycur65i5cG3LHSyrXAbEHKBK0jBJZcBlwCNN2vwOOE1SiaSewInAwlb2NTNr1kePH0zlQT25fcZidu/2KKI9chYQEdEATAMeI/Wh/0BELJA0VdLUdJuFwKPAK8ALwA8jYn5zfXNVq5l1PaXFRdxwdhUL39jMowveTLqcgqSutH+uuro6ampqki7DzPJE4+7gA3fOBuCxz59OcVG2nzf3b5LmRkR1tnk+k9rMuqziInHj2aNYunYLv3/ZP2O2lQPCzLq08446mCMO7s2dMxfT0Lg76XIKigPCzLq0oiJx8zmHU7t+Kw+++HrS5RSUvQaEpGJJ10r6qqQJTeb9n9yWZmbWMc4+cgDHDu7LXY8vYWeDRxGt1dII4gfAGcB64NuSbs+Y99GcVWVm1oEkcdM5h/P6pm38qmZVyx0MaDkgxkfEFRFxJ6lzFHpJelBSN7Kf7WxmlpdOr+pP9dADuPuJpWzf1Zh0OQWhpYAo2/MkIhoiYgrwEvAE0CuXhZmZdaTUKGIUb27ezn8//1rS5RSElgKiRtK5mRMi4t+Be4HKXBVlZpYLp4zozykjDuJ7Ty1l686GpMvJe3sNiIj4eEQ8mmX6DyOiNHdlmZnlxs3njOLtLTv56V9XJl1K3mvVYa7pG/iYmRW8cUMPZOLhFXx/1jLe2b4r6XLyWosBIak3qYvqmZl1CTdNHsWmrbu499napEvJay2dB3EIMBO4p3PKMTPLvWMG92Py6IH819PLqdvqUURzWhpBPA18IyJ8qW0z61JumjyKd7Y38F9PL0+6lLzVUkBspJlbfZqZFbIjD+nD+cccwr3PrmD9lh1Jl5OXWgqIicB5kq7rhFrMzDrVjWdXsW1XIz+Y7VFENi0d5loPXAgc1znlmJl1npEDevPhsYP46V9rWfvO9qTLyTstHsUUEY0RcU1nFGNm1tk+d1YVuxqD7z25LOlS8k67LvedvsrrlR1djJlZZ6vsX84l4wbz38+/xppN25IuJ6+0dJhrH0m3SvqupHOUcj2wHPgfnVOimVluTZs0kiD47pNLky4lr7Q0gvgZcDjwKnANMB24GLgoIi7KcW1mZp1i8AE9ueyEw3hgzipeW7816XLyRksBMTwiPhkRPwAuB6qBD0XES7kvzcys80ybNJLiIvHtJ5YkXUreaCkg3j3FMCIagRUR8U5r31zSuZIWSVoq6ZYs8ydKqpP0UvrxlYx5tZJeTU+vae0yzczaY2Cf7nz8pKE8+OJqlq/bknQ5eaGlgDhW0ub04x3gmD3PJW3eW8f0Bf7uBs4DRgOXSxqdpenTETE2/fj3JvPOTE+vbu0KmZm112cmjqBbSTF3zvQoAlo+D6I4IvqkH70joiTjeZ8W3ns8sDQilkfETuB+wL9bmFne6t+rG5+cUMnvX1nDojdbvbOky2rXYa6tNAjIvPnrarJftuNkSS9L+rOkMRnTA5guaa6kKc0tRNIUSTWSatatW9cxlZvZfmvKacMpLyvhzpmLky4lcbkMiGz3rI4mr18EhkbEscB3gIcz5k2IiONJ7aK6TtLp2RYSEfdERHVEVFdUVHRE3Wa2HzugvIxPnzqMP89/k/mv1yVdTqJyGRCrgSEZrwcDazIbRMTmiNiSfv4noFRS//TrNem/a4GHSO2yMjPLuU+fNoy+PUq5Y8b+PYrIZUDMAaokDZNUBlwGvO+y4ZIOlqT08/HpetZLKk/fqAhJ5cA5wPwc1mpm9q4+3UuZcvpwHv/7Wl58bWPS5SQmZwEREQ3ANOAxYCHwQEQskDRV0tR0s4uB+ZJeBr4NXBYRAQwEnklPfwH4Y7Z7Y5uZ5conT6nkwPKy/XoUodTncddQXV0dNTU+ZcLMOsZ/zV7O1/+0kF9NOYkThx+UdDk5IWluc6cS5HIXk5lZQfv4SUMZ0Lsbt81YTFf6Mt1aDggzs2b0KCvmujNH8sKKDTy7dH3S5XQ6B4SZ2V5cNn4Ih/btzremL9rvRhEOCDOzvehWUsz1Z1Xx0qpNPLlobdLldCoHhJlZCy4eN5jDDuzJbdP3r98iHBBmZi0oLS7ihrOqWLBmM48teDPpcjqNA8LMrBU+fNwghleUc/uMxTTu3j9GEQ4IM7NWKC4Snz97FIvf2sIfXlnTcocuwAFhZtZKHzr6EA4f2Ju7Zi6hoXF30uXknAPCzKyViorEjZNHsfzteh5+qeuPIhwQZmZt8IExAzlqUB/uenwxu7r4KMIBYWbWBpK4efLhrNqwjV/XrE66nJxyQJiZtdHEwys47rB+fOeJJWzf1Zh0OTnjgDAzayNJfOGcw3mjbjv3v/Ba0uXkjAPCzKwdThlxECcOO5C7n1rGtp1dcxThgDAzawdJ3HzO4ax7Zwc/e6426XJywgFhZtZO44cdyGlV/fn+rOVs2dGQdDkdzgFhZrYPbj7ncDbU7+Qnf6lNupQO54AwM9sHY4f04+wjB/CDWcuo27Yr6XI6lAPCzGwf3Th5FJu3N/CjZ1YkXUqHymlASDpX0iJJSyXdkmX+REl1kl5KP77S2r5mZvlizKF9Oe+og/nxMyvYWL8z6XI6TM4CQlIxcDdwHjAauFzS6CxNn46IsenHv7exr5lZXrhx8ijqdzbwg9nLky6lw+RyBDEeWBoRyyNiJ3A/cFEn9DUz63SjBvbmwmMP5Sd/qWXdOzuSLqdD5DIgBgGrMl6vTk9r6mRJL0v6s6QxbexrZpY3bjirip2Nu/m/Ty1LupQOkcuAUJZpTW/D9CIwNCKOBb4DPNyGvqmG0hRJNZJq1q1b1+5izcz21fCKXnz0uEH8/PmVvFm3Pely9lkuA2I1MCTj9WDgfRdQj4jNEbEl/fxPQKmk/q3pm/Ee90REdURUV1RUdGT9ZmZt9rmzqti9O/juk0uSLmWf5TIg5gBVkoZJKgMuAx7JbCDpYElKPx+frmd9a/qameWjIQf25NIThvCrOatYvXFr0uXsk5wFREQ0ANOAx4CFwAMRsUDSVElT080uBuZLehn4NnBZpGTtm6tazcw60rRJI5HEdx5fmnQp+0QRWXftF6Tq6uqoqalJugwzM/71kQX87LmVPH7TGVT2L0+6nCtrd9AAAAuZSURBVGZJmhsR1dnm+UxqM7Mc+OyZIygtFnc9Xri/RTggzMxyYEDv7lx1ciUPv/Q6S956J+ly2sUBYWaWI9eeMYKepcXcObMwRxEOCDOzHDmwvIyrTx3GH199g7+t2Zx0OW3mgDAzy6FrTh1O7+4l3D5jcdKltJkDwswsh/r2LGXKacOZufAtXl61Kely2sQBYWaWY586dRgH9CwtuFGEA8LMLMd6dSth6hkjmLV4HTW1G5Iup9UcEGZmneATJ1fSv1c3bpteOKMIB4SZWSfoUVbMZyeO4K/L1/OXpW8nXU6rOCDMzDrJFScexsF9unPbjMUUwmWOHBBmZp2ke2kx0yaNZO7KjcxanP/3r3FAmJl1ov9RPYTBB/Tg9gIYRTggzMw6UVlJEZ87q4pXVtcx429vJV3OXjkgzMw62UePG8Sw/uXcPmMxu3fn7yjCAWFm1slKiov4/NlV/P3Nd/jT/DeSLqdZDggzswR86JhDqRrQiztmLKYxT0cRDggzswQUF4kbJ49i2bp6fvfS60mXk5UDwswsIeeOOZjRh/ThrseXsKtxd9Ll/AMHhJlZQoqKxE2TR7Fy/VZ+O3d10uX8AweEmVmCzjpyAMcO6cd3nljKjobGpMt5n5wGhKRzJS2StFTSLXtpd4KkRkkXZ0yrlfSqpJck1eSyTjOzpEji5smjeH3TNh6Ysyrpct4nZwEhqRi4GzgPGA1cLml0M+3+A3gsy9ucGRFjI6I6V3WamSXttKr+nFB5AN95Yinbd+XPKCKXI4jxwNKIWB4RO4H7gYuytLse+C2wNoe1mJnlLUncfM7hrH1nBz9/bmXS5bwrlwExCMgcL61OT3uXpEHAR4DvZ+kfwHRJcyVNaW4hkqZIqpFUs25d/l/8yswsm5OGH8SEkQfxf59aRv2OhqTLAXIbEMoyrenZIHcC/ysiso2pJkTE8aR2UV0n6fRsC4mIeyKiOiKqKyoq9q1iM7ME3TT5cNbX7+Qnf61NuhQgtwGxGhiS8XowsKZJm2rgfkm1wMXA9yR9GCAi1qT/rgUeIrXLysysyxo39ADOPLyCH8xazubtu5IuJ6cBMQeokjRMUhlwGfBIZoOIGBYRlRFRCfwG+GxEPCypXFJvAEnlwDnA/BzWamaWF26afDh123bx42dWJF1K7gIiIhqAaaSOTloIPBARCyRNlTS1he4DgWckvQy8APwxIh7NVa1mZvni6MF9+cCYgfzo6RVs2roz0VqU7zesaIvq6uqoqfEpE2ZW2P7+5mbOu+tpPjtxBF/8wBE5XZakuc2dSuAzqc3M8swRB/fhQ8ccyr3P1rJ+y47E6nBAmJnloc+fXcX2XY18f9ayxGpwQJiZ5aERFb348HGD+OlfV/LW5u2J1OCAMDPLUzecVUXj7uB7Ty5NZPkOCDOzPDX0oHIuqR7ML19YxeubtnX68h0QZmZ5bNqkKgC++8SSTl+2A8LMLI8N6teDy8cP4dc1q1m5vr5Tl+2AMDPLc9edOZLiInHX4507inBAmJnluQF9uvOJk4fy8LzXWbp2S6ct1wFhZlYApp4xgu6lxZ06inBAmJkVgIN6deOTp1Ty+5fX8Pc3N3fKMh0QZmYFYsrpw+ndrYQ7ZizulOU5IMzMCkS/nmV8+rRhPLbgLV5dXZfz5TkgzMwKyNWnDqNfz1Jun7Eo58tyQJiZFZA+3UuZcvpwnly0jrkrN+Z0WQ4IM7MCc9XJlRxUXpbzUYQDwsyswJR3K+EzE0fw7NL1/HXZ+pwtxwFhZlaAPn7SUAb26cbtMxaRqzuDOiDMzApQ99JirjtzJHNqN/L0krdzsgwHhJlZgbr0hCEM6teD22YszskowgFhZlagupUUc+PkURwzqC87GnZ3+PvnNCAknStpkaSlkm7ZS7sTJDVKuritfc3M9mcXjxvMVz98FN1Lizv8vXMWEJKKgbuB84DRwOWSRjfT7j+Ax9ra18zMcieXI4jxwNKIWB4RO4H7gYuytLse+C2wth19zcwsR3IZEIOAVRmvV6envUvSIOAjwPfb2jfjPaZIqpFUs27dun0u2szMUnIZEMoyrenP7HcC/ysiGtvRNzUx4p6IqI6I6oqKinaUaWZm2ZTk8L1XA0MyXg8G1jRpUw3cLwmgP/BBSQ2t7GtmZjmUy4CYA1RJGga8DlwGXJHZICKG7Xku6T7gDxHxsKSSlvqamVlu5SwgIqJB0jRSRycVAz+OiAWSpqbnN/3docW+uarVzMz+kXJ1DY8kVFdXR01NTdJlmJkVDElzI6I667yuFBCS1gEr29m9P5CbC5p0vq6yLl1lPcDrko+6ynrAvq3L0IjIeoRPlwqIfSGpprkULTRdZV26ynqA1yUfdZX1gNyti6/FZGZmWTkgzMwsKwfEe+5JuoAO1FXWpausB3hd8lFXWQ/I0br4NwgzM8vKIwgzM8vKAWFmZlntVwEh6ceS1kqa38x8Sfp2+iZFr0g6vrNrbK1WrMtESXWSXko/vtLZNbaGpCGSnpS0UNICSTdkaVMQ26WV65L320VSd0kvSHo5vR7/lqVNoWyT1qxL3m+TTJKKJc2T9Ics8zp2u0TEfvMATgeOB+Y3M/+DwJ9JXU32JOD5pGveh3WZSOraVonX2sJ6HAIcn37eG1gMjC7E7dLKdcn77ZL+d+6Vfl4KPA+cVKDbpDXrkvfbpEm9NwH/na3mjt4u+9UIIiJmAxv20uQi4KeR8hzQT9IhnVNd27RiXQpCRLwRES+mn78DLOQf7/1RENulleuS99L/zlvSL0vTj6ZHsxTKNmnNuhQMSYOB84EfNtOkQ7fLfhUQrdDqGxUViJPTQ+s/SxqTdDEtkVQJHEfqW16mgtsue1kXKIDtkt6N8RKpOz3OiIiC3SatWBcogG2SdifwJWB3M/M7dLs4IN6v1TcqKgAvkrrGyrHAd4CHE65nryT1InXr2c9HxOams7N0ydvt0sK6FMR2iYjGiBhL6l4s4yUd1aRJwWyTVqxLQWwTSR8C1kbE3L01yzKt3dvFAfF+XeZGRRGxec/QOiL+BJRK6p9wWVlJKiX1gfqLiHgwS5OC2S4trUshbReAiNgEPAWc22RWwWyTPZpblwLaJhOACyXVAvcDkyT9vEmbDt0uDoj3ewT4RPpIgJOAuoh4I+mi2kPSwVLqVn2SxpPa1uuTreofpWv8EbAwIm5vpllBbJfWrEshbBdJFZL6pZ/3AM4G/t6kWaFskxbXpRC2CUBE3BoRgyOiktRN1J6IiI83adah2yWXd5TLO5J+SeqIhf6SVgP/QupHKyJ1A6M/kToKYCmwFfhUMpW2rBXrcjHwGaVu4boNuCzShznkmQnAPwGvpvcTA/wzcBgU3HZpzboUwnY5BPiJpGJSH5YPRMQf9P6bfRXKNmnNuhTCNmlWLreLL7VhZmZZeReTmZll5YAwM7OsHBBmZpaVA8LMzLJyQJiZWVYOCLNOIOmTkr6bdB1mbeGAMOtg6ZOU9un/LUn71TlKlp8cEGbtIOkmSfPTj89LqlTqPhDfI3VtnyGSPiVpsaRZpE6i29O3QtJvJc1JPyakp/+rpHskTQd+msyamb3H31LM2kjSOFJnqJ5I6uJozwOzgMOBT0XEZ9OXWP43YBxQBzwJzEu/xV3AHRHxjKTDgMeAI9PzxgGnRsS2zlofs+Y4IMza7lTgoYioB5D0IHAasDJ9DX5IhcdTEbEu3eZXwKj0vLOB0enL/wD0kdQ7/fwRh4PlCweEWdtlu6QyQH2T181dx6YIOLlpEKQDo+l7mCXGv0GYtd1s4MOSekoqBz4CPN2kzfPAREkHpS8BfknGvOnAtD0vJI3NdcFm7eERhFkbRcSLku4DXkhP+iGwsUmbNyT9K/BX4A1SP1wXp2d/Drhb0iuk/h+cDUzNfeVmbeOruZqZWVbexWRmZlk5IMzMLCsHhJmZZeWAMDOzrBwQZmaWlQPCzMyyckCYmVlW/w+V8FzfgkKXCAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Rsqu_test = []\n",
    "\n",
    "order = [1, 2, 3, 4]\n",
    "for n in order:\n",
    "    pr = PolynomialFeatures(degree=n)\n",
    "    \n",
    "    x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
    "    \n",
    "    x_test_pr = pr.fit_transform(x_test[['horsepower']])    \n",
    "    \n",
    "    lr.fit(x_train_pr, y_train)\n",
    "    \n",
    "    Rsqu_test.append(lr.score(x_test_pr, y_test))\n",
    "\n",
    "plt.plot(order, Rsqu_test)\n",
    "plt.xlabel('order')\n",
    "plt.ylabel('R^2')\n",
    "plt.title('R^2 Using Test Data')\n",
    "plt.text(3, 0.75, 'Maximum R^2 ')    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see the R^2 gradually increases until an order three polynomial is used. Then the  R^2 dramatically decreases at four."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following function will be used in the next section; please run the cell."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(order, test_data):\n",
    "    x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=test_data, random_state=0)\n",
    "    pr = PolynomialFeatures(degree=order)\n",
    "    x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
    "    x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
    "    poly = LinearRegression()\n",
    "    poly.fit(x_train_pr,y_train)\n",
    "    PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train,y_test, poly, pr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following interface allows you to experiment with different polynomial orders and different amounts of data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5eb54ae6cc4348fb84694b76940eabf4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(IntSlider(value=3, description='order', max=6), FloatSlider(value=0.45, description='tes…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<function __main__.f(order, test_data)>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "interact(f, order=(0, 6, 1), test_data=(0.05, 0.95, 0.05))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4a):</h1>\n",
    "\n",
    "<b>We can perform polynomial transformations with more than one feature. Create a \"PolynomialFeatures\" object \"pr1\" of degree two?</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "pr1 = PolynomialFeatures(degree=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "pr1=PolynomialFeatures(degree=2)\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4b): </h1>\n",
    "\n",
    "<b> \n",
    " Transform the training and testing samples for the features 'horsepower', 'curb-weight', 'engine-size' and 'highway-mpg'. Hint: use the method \"fit_transform\" \n",
    "?</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "\n",
    "x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "\n",
    "x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- The answer is below:\n",
    "\n",
    "x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4c): </h1>\n",
    "<b> \n",
    "How many dimensions does the new feature have? Hint: use the attribute \"shape\"\n",
    "</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(110, 70)"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_pr1.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "There are now 15 features: x_train_pr1.shape \n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4d): </h1>\n",
    "\n",
    "<b> \n",
    "Create a linear regression model \"poly1\" and train the object using the method \"fit\" using the polynomial features?</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'linear_model' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-57-9de19bda4e19>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpoly1\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlinear_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLinearRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_train_pr1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'linear_model' is not defined"
     ]
    }
   ],
   "source": [
    "poly1=linear_model.LinearRegression().fit(x_train_pr1,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "poly1=LinearRegression().fit(x_train_pr1,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "poly1=linear_model.LinearRegression().fit(x_train_pr1,y_train)\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4e): </h1>\n",
    "<b>Use the method  \"predict\" to predict an output on the polynomial features, then use the function \"DistributionPlot\"  to display the distribution of the predicted output vs the test data?</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "image/png": "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4YILLmDy5MnccsstbLTRRkyePJnJkydz4IEHtqvN5kF933335frrr6+LU3Qa1CVJkqo56STYaafOvZx0Upurffvttxk/fjyXXnrpUkH95z//OQMHDmTQoEGccsopjBo1igkTJnDYYYfR0NDA/Pnz6d27N7NmzQJgwoQJ7LTTTgA89NBDbLvttmyxxRZsu+22TJkypdV+DB8+fIn1jx49mqFDh7LKKqsUauu0007jl7/8ZdPtAQMGMG3aNAD+/Oc/87nPfY6GhgaOPfZYFi9ezOLFiznyyCMZMGAAAwcO5Ne//vVSbd51110MHjyYrl1bP8P4s88+y+67786WW27JjjvuyDPPPAPAyJEjGTBgAIMGDWLnnXdm/vz5nH766Vx99dVNo/ERwQ477MAtt9zS6jrK4HnUJUmS6siNN97I0KFD2XjjjenRoweTJk1i8ODB3Hrrrdx44408+OCDrLLKKrz55pv06NGD3//+9/zyl79kyJAhrba76aabcs8999C1a1fuuOMO/vu//5vrr7++xfmHDh3KN77xDWbPnk3Pnj0ZOXIk3/nOdzrUVqWnnnqKv/zlL4wfP55u3brx7W9/m6uvvprNNtuMV155hccffxyAOXPmLLXs+PHj2XLLLdtcxzHHHMMf//hHNtpoI8aPH88JJ5zA2LFj+dnPfsa4ceNYZ511mDNnDt27d+cnP/kJjz/+OOeff37T8kOGDOHee+/lgAMOKLRNtWJQlyRJqqYiuJXp2muv5aR85P3QQw/l2muvZfDgwdxxxx0cddRRrLLKKgD06NGjXe3OnTuXI444gmeffZaIYOHCha3Ov+KKK7LPPvswatQohg0bxuTJk9ltt9061FalO++8k4kTJ7LVVlsBMH/+fNZee22+/OUv8/zzz/Od73yHvfbaq2ldlWbMmEG/fv1abX/OnDk88MADDBs2rGnaokWLANhuu+04/PDDOeigg1oN4WuvvXanlxN1hEFdkiSpTsyePZu77rqLxx9/nIhg8eLFRAQ///nPSSkVOhd3165d+eCDDwCWqLP+8Y9/zM4778zo0aOZNm1aU0lMa4YPH86ZZ55JSol9992Xbt26FW6rsh+VfUkpccQRR3DOOecstcyjjz7KbbfdxgUXXMB1113HZZddtsT93bt3b7N2PKXEWmutxeTJk5e675JLLuHBBx/k5ptvZtCgQTz22GNV21iwYAHdu3dvdT1lsEZdkiSpTowaNYrDDz+cF198kWnTpvHyyy/Tp08f7rvvPnbbbTcuu+wy3n33XQDefPNNAFZbbTXmzZvX1Ebv3r2ZOHEiwBLlKHPnzmW99dYDsgNQi9h555159tlnueCCCxg+fHi72urduzeTJk0CsgM2X3jhBQB23XVXRo0axRtvvNG0HS+++CKzZs3igw8+YNiwYZxxxhlNy1bq168fU6dObbXPa665Juuuuy6jR48G4IMPPuDRRx8F4Pnnn2frrbfmjDPOYM011+SVV15Zav8BPPPMMwwYMKCt3VNzBnVJkqQ6ce2117L//vsvMW3YsGFcc801DB06lH322YchQ4bQ0NDQdKDmkUceyXHHHdd0MOlPf/pTTjzxRHbYYQe6dOnS1M5//dd/ceqpp7LddtuxePHiQv1ZYYUVGDZsGLNnz2bHHXdsV1vDhg3jzTffpKGhgREjRrDxxhsD0L9/f84880x22203Nt98c770pS8xY8YMXnnlFXbaaScaGho48sgjq46477HHHtxzzz1t9nvkyJFcdNFFDBo0iM0224ybb74ZgO9973sMHDiQgQMH8sUvfpEBAwawyy678Oijj7LFFls0ndrx7rvvZs899yy0j2opUkrLug91aciQIWnChAnLuhuSJKlETz31VJs10Fq29t9/f37+85/Tt2/fmrT/6quvcuSRRzJ27NhOb7va8ysiJqaUqh4J7Ii6JEmS/m2ce+65zJgxo2btv/zyy0ucVnJZ8mBSSZIk/dvYZJNN2GSTTWrW/uc///matd1ejqhLkiRJdcigLkmSJNUhg7okSZJUhwzqKm7BAviv/4K5c5d1TyRJkj72DOoq7g9/gF/8AurkSGhJkj6OunTpQkNDAwMGDOCggw5q+oGjjhg3bhx77703AGPGjOHcc89tcd45c+Zw4YUXtnsdp5122lJnSRk3bhzbbLPNEtMWLVrEOuus0+oZW6q11dkOPPBAnn/+eT7/+c/T0NDAZz7zGXr16kVDQwMNDQ1MmzatXe3dcMMNPP300023TzrppELnei/CoK7i5szJ/hb4+WJJktQx3bt3Z/LkyTz++OOsuOKKXHTRRUvcn1Ligw8+aHe7++yzD6ecckqL93c0qFez4447Mn369CVC7x133MGAAQNYd911O2UdHfHEE0+wePFiNtxwQx588EEmT57M6aefziGHHMLkyZOZPHkyvXv3blebzYP6d77znao/1tQRBnVJkqQqTjoJdtqpcy8nndS+Puywww5MnTqVadOm0a9fP7797W8zePBgXn75ZcaOHcs222zD4MGDOeigg3j77bcB+Mc//sGmm27K9ttvzw033NDU1uWXX84JJ5wAwOuvv87+++/PoEGDGDRoEPfffz+nnHIKzz33HA0NDZx88skA/OIXv2CrrbZi880356c//WlTW2eddRabbLIJX/ziF5kyZcpS/V5hhRU46KCD+Mtf/tI0beTIkQwfPhyASy65hK222opBgwYxbNiwqt8a7LTTTjT++OSsWbOaAvTixYs5+eSTm/r1hz/8AYAZM2aw4447Nn0bce+99y7V5tVXX82+++7b5n6/9dZbm/btIYccwjvvvAPAySefTP/+/dl88835wQ9+wL333sstt9zC9773vabR+I022ogZM2Ywc+bMNtfTFoO6imscSffXbCVJqrlFixZx6623MnDgQACmTJnC4YcfziOPPMKqq67KmWeeyR133MGkSZMYMmQI5513HgsWLOCb3/wmN910E/feey+vvfZa1ba/+93v8oUvfIFHH32USZMmsdlmm3Huueey0UYbMXnyZH7xi18wduxYnn32WR566CEmT57MxIkTueeee5g4cSIjR47kkUce4YYbbuDhhx+uuo7hw4czcuRIAN577z1uueUWhg0bBsABBxzAww8/zKOPPkq/fv249NJLC++XSy+9lNVXX52HH36Yhx9+mEsuuYQXXniBa665ht13353Jkyfz6KOP0tDQsNSy48ePZ8stt2y1/TfeeINzzz2XO++8k0mTJrH55pvzm9/8htdff51bbrmFJ554gscee4xTTz2VHXbYgT333JNf//rXS4zGb7HFFtx///2Ft6kl/uCRirPkRZK0HDn//GWz3vnz5zeFzB122IGjjz6aV199lQ022ICtt94agAceeIAnn3yS7bbbDoD333+fbbbZhqeffpo+ffrQt29fAL761a9y8cUXL7WOu+66iyuvvBLIauJXX311/vWvfy0xz9ixYxk7dixbbLEFAG+//TbPPvss8+bNY//992eVVVYBspKaarbaaivefvttpkyZwlNPPcXWW2/NmmuuCcDjjz/Oj370I+bMmcPbb7/N7rvvXnj/jB07lscee4xRo0YBMHfuXJ599lm22morvv71r7Nw4UL222+/qkF9xowZ9OrVq9X277//fp588km23XZbINu322+/PT169GCFFVbgm9/8JnvttVdT7X81a6+9Nq+++mrhbWqJQV3t54i6JEk101ij3tyqq67adD2lxJe+9CWuvfbaJeaZPHky0UkDayklTj31VI499tglpp9//vmF13HooYcycuRInnrqqaayF4AjjzySG2+8kUGDBnH55Zczbty4pZbt2rVrUy3+ggULlujX7373u6rh/p577uHvf/87X/va1zj55JM5/PDDl7i/e/fuS7RVTUqJoUOHcsrwEMcAACAASURBVNVVVy1134QJE7j99tsZOXIkI0aMYOzYsVXbWLBgAd27d291PUXUtPQlIoZGxJSImBoRSx29EJnf5vc/FhGD21o2InpExO0R8Wz+d82K+07N558SEbvn01aLiMkVl1kRsYw+I/+bs/RFkqS6sPXWWzN+/HimTp0KwLvvvsszzzzDpptuygsvvMBzzz0HsFSQb7TrrrsyYsQIIKv5fuutt1httdWYN29e0zy77747l112WVPt+yuvvMIbb7zBjjvuyOjRo5k/fz7z5s3jpptuarGfw4cP589//jN33XXXEiPv8+bNY91112XhwoVcffXVVZft3bs3EydOBGgaPW/s14gRI1i4cCEAzzzzDO+88w4vvvgia6+9Nt/85jc5+uijmTRp0lJt9uvXr2mftWTbbbfln//8J88//zwA77zzTtM3CW+99RZ77703v/71r3nkkUcAltpvjX0aMGBAq+spomZBPSK6ABcAewD9geER0b/ZbHsAffPLMcCIAsueAtyZUuoL3JnfJr//UGAzYChwYUR0SSnNSyk1NF6AF4EPj6xQcQZ1SZLqQq9evbj88ssZPnw4m2++OVtvvTVPP/00K6+8MhdffDF77bUX22+/PRtssEHV5X/zm99w9913M3DgQLbcckueeOIJevbsyXbbbceAAQM4+eST2W233fjKV77CNttsw8CBAznwwAOZN29e0wGWDQ0NDBs2jB122KHFfvbv359VVlmFXXbZZYlvBM444ww+//nP86UvfYlNN9206rLf//73GTFiBNtuuy2zZs1qmv6Nb3yD/v37M3jwYAYMGMCxxx7LokWLGDduHA0NDWyxxRZcf/31nHjiiUu1uddee1Udva+0zjrr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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "yhat_test1=poly1.predict(x_test_pr1)\n",
    "Title='Distribution  Plot of  Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
    "DistributionPlot(y_test, yhat_test1, \"Actual Values (Test)\", \"Predicted Values (Test)\", Title)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "yhat_test1=poly1.predict(x_test_pr1)\n",
    "Title='Distribution  Plot of  Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
    "DistributionPlot(y_test, yhat_test1, \"Actual Values (Test)\", \"Predicted Values (Test)\", Title)\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #4f): </h1>\n",
    "\n",
    "<b>Use the distribution plot to determine the two regions were the predicted prices are less accurate than the actual prices.</b>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "The predicted value is lower than actual value for cars where the price  $ 10,000 range, conversely the predicted price is larger than the price cost in the $30, 000 to $40,000 range. As such the model is not as accurate in these ranges .\n",
    "    \n",
    "-->\n",
    "\n",
    "<img src = \"https://ibm.box.com/shared/static/c35ipv9zeanu7ynsnppb8gjo2re5ugeg.png\" width = 700, align = \"center\">\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2 id=\"ref3\">Part 3: Ridge regression</h2> "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://baike.baidu.com/item/%E5%B2%AD%E5%9B%9E%E5%BD%92/554917?fr=aladdin"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " In this section, we will review Ridge Regression we will see how the parameter Alfa changes the model. Just a note here our test data will be used as validation data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Let's perform a degree two polynomial transformation on our data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "pr=PolynomialFeatures(degree=2)\n",
    "x_train_pr=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])\n",
    "x_test_pr=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Let's import  <b>Ridge</b>  from the module <b>linear models</b>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Ridge"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create a Ridge regression object, setting the regularization parameter to 0.1 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "RigeModel=Ridge(alpha=0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Like regular regression, you can fit the model using the method <b>fit</b>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/ridge.py:125: LinAlgWarning: scipy.linalg.solve\n",
      "Ill-conditioned matrix detected. Result is not guaranteed to be accurate.\n",
      "Reciprocal condition number1.029716e-16\n",
      "  overwrite_a=True).T\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=False, random_state=None, solver='auto', tol=0.001)"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RigeModel.fit(x_train_pr, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Similarly, you can obtain a prediction: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "yhat = RigeModel.predict(x_test_pr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's compare the first five predicted samples to our test set "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predicted: [ 6567.83081933  9597.97151399 20836.22326843 19347.69543463]\n",
      "test set : [ 6295. 10698. 13860. 13499.]\n"
     ]
    }
   ],
   "source": [
    "print('predicted:', yhat[0:4])\n",
    "print('test set :', y_test[0:4].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We select the value of Alfa that minimizes the test error, for example, we can use a for loop. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "Rsqu_test = []\n",
    "Rsqu_train = []\n",
    "dummy1 = []\n",
    "ALFA = 10 * np.array(range(0,1000))\n",
    "for alfa in ALFA:\n",
    "    RigeModel = Ridge(alpha=alfa) \n",
    "    RigeModel.fit(x_train_pr, y_train)\n",
    "    Rsqu_test.append(RigeModel.score(x_test_pr, y_test))\n",
    "    Rsqu_train.append(RigeModel.score(x_train_pr, y_train))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can plot out the value of R^2 for different Alphas "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f875c8e0978>"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAJNCAYAAAD6c1l4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde5RlZWHn/d/TdenqK91Agwi03Too0IBcKkSDoxCVoBPjJSbByyT6TiQSnWSyMgwkk8SoK++bd0UdddQY4jiTcUh8DYpilvcMihoc6UZULl64CS0KDQj0vau6nvePc0716aL6evbp6q7+fNY66+yzL6eew1b5uuups0utNQAAQO/mzPQAAABgthDXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0JDBmR5Ak44++ui6YsWKmR4GAACz2Jo1ax6qtS6bbtusiusVK1Zk9erVMz0MAABmsVLKj3a1zbQQAABoiLgGAICGiGsAAGjIrJpzDQAwk8bGxrJ27dps2bJlpodCA0ZGRnLCCSdkaGhor48R1wAADVm7dm0WLVqUFStWpJQy08OhB7XWPPzww1m7dm1Wrly518eZFgIA0JAtW7bkqKOOEtazQCklRx111D7/FkJcAwA0SFjPHvtzLsU1AMBhbOHChUmS+++/P6985Sun3ef888/f471E3v3ud2fTpk2Tr1/84hfn0UcfbW6gbZ3x7sqjjz6aD3zgA43/3L0lrgEAyJOf/ORcffXV+3381Lj+zGc+kyVLljQxtH0irgEAaMTll1++U1j++Z//ed75zndmw4YNef7zn5+zzz47p59+ej71qU894dh77rknp512WpJk8+bNufjii3PGGWfkN37jN7J58+bJ/S699NKMjo5m1apVectb3pIkee9735v7778/F1xwQS644IIkrTtnP/TQQ0mSd73rXTnttNNy2mmn5d3vfvfkzzvllFPyhje8IatWrcqFF16408/puPvuu/PsZz87P/dzP5c//dM/nVy/q890xRVX5M4778yZZ56Zyy67bK8+e6NqrbPmcc4551QAgJly2223zejPv+mmm+pzn/vcydennHJK/dGPflTHxsbqY489Vmutdd26dfVpT3tanZiYqLXWumDBglprrXfffXddtWpVrbXWd77znfX1r399rbXWb3/723VgYKDeeOONtdZaH3744VprrePj4/V5z3te/fa3v11rrfUpT3lKXbdu3eTP7rxevXp1Pe200+qGDRvq+vXr66mnnlpvuummevfdd9eBgYH6rW99q9Za66/92q/Vj3zkI0/4TC95yUvq3/3d39Vaa33f+943Od5dfabuz7G7/fbWdOc0yeq6ix71VXwAAH3w1k/fmtvuf7zR9zz1yYvzlpes2uX2s846Kw8++GDuv//+rFu3LkuXLs3y5cszNjaWP/7jP87111+fOXPm5Mc//nEeeOCBPOlJT5r2fa6//vr83u/9XpLkjDPOyBlnnDG57WMf+1iuvPLKjI+P5yc/+Uluu+22nbZP9bWvfS0vf/nLs2DBgiTJK17xinz1q1/Nr/zKr2TlypU588wzkyTnnHNO7rnnnicc//Wvfz0f//jHkyT/9t/+21x++eVJWheIp/tMU+1qv1199l6JawCAWeSVr3xlrr766vz0pz/NxRdfnCS56qqrsm7duqxZsyZDQ0NZsWLFHr9ibrpvyrj77rvzjne8IzfeeGOWLl2a173udXt8n9aF3unNnTt3cnlgYGDaaSG7Gsvefqb9+ey9ENcAAH2wuyvM/XTxxRfnDW94Qx566KF85StfSZI89thjOeaYYzI0NJTrrrsuP/rRj3b7Hs997nNz1VVX5YILLsgtt9yS73znO0mSxx9/PAsWLMgRRxyRBx54IJ/97Gdz/vnnJ0kWLVqU9evX5+ijj37Ce73uda/LFVdckVprrrnmmnzkIx/Z689z3nnn5aMf/Whe+9rX5qqrrppcv6vP1BnHnvbrF3ENADCLrFq1KuvXr8/xxx+f4447Lknymte8Ji95yUsyOjqaM888MyeffPJu3+PSSy/N61//+pxxxhk588wzc+655yZJnvnMZ+ass87KqlWr8tSnPjXnnXfe5DGXXHJJXvSiF+W4447LddddN7n+7LPPzute97rJ9/jt3/7tnHXWWdNOAZnOe97znrz61a/Oe97znvzqr/7q5Ppdfaajjjoq5513Xk477bS86EUvyuWXX75Pn71XZXeX6g81o6OjdU/fwQgA0C+33357TjnllJkeBg2a7pyWUtbUWken299X8QEAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXPdq8+bkwguTz3xmpkcCABzmHn300XzgAx/Yr2Nf/OIX59FHH93tPn/2Z3+WL33pS/v1/lOtWLEip59+ek4//fSceuqp+ZM/+ZNs3bp1t8f08vkOFHHdq/vuS774xeTlL289AwDMkN3F5/bt23d77Gc+85ksWbJkt/u87W1vywte8IL9Ht9U1113Xb773e/mm9/8Zu66665ccsklu91fXB8OOvemHxhIXvrSpH2bUQCAA+2KK67InXfemTPPPDOXXXZZvvzlL+eCCy7Iq1/96px++ulJkpe97GU555xzsmrVqlx55ZWTx65YsSIPPfRQ7rnnnpxyyil5wxvekFWrVuXCCy/M5s2bkySve93rcvXVV0/u/5a3vCVnn312Tj/99Hzve99Lkqxbty4vfOELc/bZZ+d3fud38pSnPCUPPfTQbse9cOHCfPCDH8wnP/nJPPLII9mwYUOe//znT773pz71qWk/3672m0niuledX1+8//3JypXJv/k3yb/8y8yOCQA4LP3lX/5lnva0p+Xmm2/OX/3VXyVJvvnNb+Yv/uIvcttttyVJPvzhD2fNmjVZvXp13vve9+bhhx9+wvv88Ic/zJve9KbceuutWbJkST7+8Y9P+/OOPvro3HTTTbn00kvzjne8I0ny1re+Nb/4i7+Ym266KS9/+ctz77337tXYFy9enJUrV+aHP/xhRkZGcs011+Smm27Kddddlz/8wz9MrfUJn29X+82kwRn96bNBJ65POCH50peS5z0v+aVfSv7rf01+67eSUmZ2fADAzPgP/yG5+eZm3/PMM5N3v3ufDjn33HOzcuXKydfvfe97c8011yRJ7rvvvvzwhz/MUUcdtdMxK1euzJlnnpkkOeecc3LPPfdM+96veMUrJvf5xCc+kST52te+Nvn+F110UZYuXbrXY+2Eca01f/zHf5zrr78+c+bMyY9//OM88MAD0+4/3X5PetKT9vpnNs2V6151poWMjCTHHZd8+cvJOeckr399a5pI+1ckAAAzYcGCBZPLX/7yl/OlL30pN9xwQ7797W/nrLPOypZOy3SZO3fu5PLAwEDGx8enfe/Oft377O+V4/Xr1+eee+7J05/+9Fx11VVZt25d1qxZk5tvvjnHHnvstOPc2/0OJFeue9W5ct35D+GTn5z88z8n73pX8ra3JatWJRdfnLzxjclznuNKNgAcLvbxCnMTFi1alPXr1+9y+2OPPZalS5dm/vz5+d73vpdvfOMb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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "width = 12\n",
    "height = 10\n",
    "plt.figure(figsize=(width, height))\n",
    "\n",
    "plt.plot(ALFA,Rsqu_test, label='validation data  ')\n",
    "plt.plot(ALFA,Rsqu_train, 'r', label='training Data ')\n",
    "plt.xlabel('alpha')\n",
    "plt.ylabel('R^2')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figure 6:The blue line represents the R^2 of the test data, and the red line represents the R^2 of the training data. The x-axis represents the different values of Alfa "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The red line in figure 6 represents the  R^2 of the test data, as Alpha increases the R^2 decreases; therefore as Alfa increases the model performs worse on the test data.  The blue line represents the R^2 on the validation data, as the value for Alfa increases the R^2 decreases.   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #5): </h1>\n",
    "\n",
    "Perform Ridge regression and calculate the R^2 using the polynomial features, use the training data to train the model and test data to test the model. The parameter alpha should be set to  10.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4709833260694387"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Write your code below and press Shift+Enter to execute \n",
    "RigeModel = Ridge(alpha=0) \n",
    "RigeModel.fit(x_train_pr, y_train)\n",
    "RigeModel.score(x_test_pr, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "RigeModel = Ridge(alpha=0) \n",
    "RigeModel.fit(x_train_pr, y_train)\n",
    "RigeModel.score(x_test_pr, y_test)\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2 id=\"ref4\">Part 4: Grid Search</h2>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://www.jianshu.com/p/55b9f2ea283b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://www.cnblogs.com/ysugyl/p/8711205.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The term Alfa is a hyperparameter, sklearn has the class  <b>GridSearchCV</b> to make the process of finding the best hyperparameter simpler."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's import <b>GridSearchCV</b> from  the module <b>model_selection</b>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We create a dictionary of parameter values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parameters1= [{'alpha': [0.001,0.1,1, 10, 100, 1000, 10000, 100000, 100000]}]\n",
    "parameters1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a ridge regions object:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=False, random_state=None, solver='auto', tol=0.001)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RR=Ridge()\n",
    "RR"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a ridge grid search object "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [],
   "source": [
    "Grid1 = GridSearchCV(RR, parameters1,cv=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit the model "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=4, error_score='raise-deprecating',\n",
       "       estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=False, random_state=None, solver='auto', tol=0.001),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid=[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}],\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Grid1.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The object finds the best parameter values on the validation data. We can obtain the estimator with the best parameters and assign it to the variable BestRR as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ridge(alpha=10000, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=False, random_state=None, solver='auto', tol=0.001)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "BestRR=Grid1.best_estimator_\n",
    "BestRR"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " We now test our model on the test data "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8411649831036149"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "BestRR.score(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
    "<h1> Question  #6): </h1>\n",
    "Perform a grid search for the alpha parameter and the normalization parameter, then find the best values of the parameters\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
       "   normalize=True, random_state=None, solver='auto', tol=0.001)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Write your code below and press Shift+Enter to execute \n",
    "parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
    "Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
    "Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
    "Grid2.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Double-click <b>here</b> for the solution.\n",
    "\n",
    "<!-- The answer is below:\n",
    "\n",
    "parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
    "Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
    "Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
    "Grid2.best_estimator_\n",
    "\n",
    "-->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1>Thank you for completing this notebook!</h1>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
    "\n",
    "    <p><a href=\"https://cocl.us/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
    "</div>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>About the Authors:</h3>\n",
    "\n",
    "This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
    "\n",
    "<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<hr>\n",
    "<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python",
   "language": "python",
   "name": "conda-env-python-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
